我正在尝试使用git svn克隆一个svn存储库。存储库具有标记的每日构建,我想忽略它。我正在尝试使用“ignore-paths”选项来执行此操作,但我仍然将每日构建标记作为我的存储库中的分支。
这是一个非常近期和类似(但迄今尚未得到答案)的问题: How to git svn fetch only branches/tags with certain patterns?
通用存储库结构
我在正则表达方面不是那么出色,而且它们可能是错的,但这是我尝试过的:
这只是我在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
我不确定ignore-paths正则表达式到底匹配什么。它是svn存储库的相对路径(tags / builds / Daily build 1)吗?是评估项目中的每个文件(标记/构建/每日构建1 /文件1,标记/构建/每日构建1 /文件2)还是仅在分支/标记级别(标记/构建/每日构建1)?它是否包含存储库基本URL(https://test.kuali.org/svn/rice/tags/builds/Daily build 1)?
除了--stdlayout之外我还应该做些什么(为标签指定正则表达式,以获得我想要的东西)?
我只对trunk和某些发布标记感兴趣。有没有更好的方法来获得这些?我只尝试使用trunk进行克隆,然后在配置中添加“fetch =”以仅添加我关注的标记,然后获取标记的标记,但是当我在git gui中查看结果时(可视化所有分支) )这两个标签在一次提交时显示为浮动(不与主干或彼此绑定)。
不确定它是否是相关的,但我在Windows 7 64位计算机上使用msysgit(git版本1.7.3.1.msysgit.0)。
很长的问题,我知道......我只想彻底。
答案 0 :(得分:4)
可能更容易克隆中继而不是其他任何内容(git svn clone -T http://path/to/trunk
),然后通过修改配置文件并执行git svn fetch
es来添加所需的特定标记和分支。