【发布时间】:2011-10-19 12:15:23
【问题描述】:
我正在尝试使用 git svn 克隆一个 svn 存储库。该存储库已标记了我想忽略的每日构建。我正在尝试使用“忽略路径”选项来执行此操作,但我仍然在我的存储库中获取每日构建标签作为分支。
这里有一个非常近期和类似(但到目前为止尚未回答)的问题: How to git svn fetch only branches/tags with certain patterns?
存储库布局 - https://test.kuali.org/svn/rice
一般存储库结构
- 分支机构
- 分支 1
- 忽略目录 1
- 忽略目录 1
- 标签
- 标签 1
- 标签 2
- 旧
- 旧标签 1
- 旧标签 2
- 构建
- 每日构建 1
- 每日构建 2
- 主干
我尝试过的
我不擅长正则表达式,它们可能是错误的,但这是我尝试过的:
这只是我在 git svn 文档中找到的内容的修改版本:
git svn clone -r15709:HEAD --prefix=svn/ --stdlayout --no-follow-parent --ignore-paths="^[^/]+/(?:tags/builds|tags/old|branches)" https://test.kuali.org/svn/rice
这是我试图简化的:
git svn clone -r15709:HEAD --prefix=svn/ --stdlayout --no-follow-parent --ignore-paths="(old|builds)" https://test.kuali.org/svn/rice rice-full
绝望...(并添加了一些我不需要的其他路径)
git svn clone -r15711:HEAD --prefix=svn/ --stdlayout --ignore-paths="^[^/]+/(?:builds|old)|inactive|rice-functional-tests|sandbox|tools" https://test.kuali.org/svn/rice
然后我切换到更新的版本,以便它更快完成并尝试忽略所有分支和标签进行测试。这个似乎没有得到任何分支和标签,但它也从未完成。它似乎冻结了(至少,它运行的时间比我想象的要长,因为只有一两天的历史记录):
git svn clone -r21846:HEAD --prefix=svn/ --stdlayout --ignore-paths="^tags*|^branches*" https://test.kuali.org/svn/rice
我尝试的最后一个是:
git svn clone -r15711:HEAD --prefix=svn/ --stdlayout --ignore-paths="^tags/old*|^tags/builds*|^inactive*|^rice-functional-tests*|^sandbox*|^tools*" https://test.kuali.org/svn/rice
一般想法和问题
我不确定忽略路径正则表达式与什么匹配。它是 svn 存储库的相对路径(tags/builds/Daily build 1)吗?它是针对项目中的每个文件(标签/构建/每日构建 1/文件 1、标签/构建/每日构建 1/文件 2)还是仅在分支/标签级别(标签/构建/每日构建 1)进行评估?它是否包含存储库基础 url (https://test.kuali.org/svn/rice/tags/builds/Daily build 1)?
除了--stdlayout(为可以得到我想要的标签的正则表达式指定一个正则表达式)之外,我应该做些什么吗?
我只对主干和某些发布标签感兴趣。有没有更好的方法来获得这些?我尝试只使用主干进行克隆,然后在配置中添加“fetch=”以仅添加我关心的标签,然后获取那些被标记的修订版,但是当我在 git gui 中查看结果时(可视化所有分支) 这两个标签显示为浮动,带有单个提交(不绑定到主干或彼此)。
不确定它是否相关,但我在 windows 7 64 位机器上使用 msysgit(git 版本 1.7.3.1.msysgit.0)。
很长的问题,我知道...我只是想彻底。
【问题讨论】:
-
你有没有找到解决办法?