Git SVN如何忽略路径工作(忽略每日构建标记)?

时间:2011-08-03 21:50:46

标签: git git-svn msysgit

我正在尝试使用git svn克隆一个svn存储库。存储库具有标记的每日构建,我想忽略它。我正在尝试使用“ignore-paths”选项来执行此操作,但我仍然将每日构建标记作为我的存储库中的分支。

这是一个非常近期和类似(但迄今尚未得到答案)的问题: How to git svn fetch only branches/tags with certain patterns?

存储库布局 - https://test.kuali.org/svn/rice

通用存储库结构

  • 分支
    • 分行1
  • 忽略目录1
  • 忽略目录1
  • 标记
    • 标签1
    • 标签2
      • Old Tag 1
      • Old Tag 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

一般性思考和问题

  1. 我不确定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)?

  2. 除了--stdlayout之外我还应该做些什么(为标签指定正则表达式,以获得我想要的东西)?

  3. 我只对trunk和某些发布标记感兴趣。有没有更好的方法来获得这些?我只尝试使用trunk进行克隆,然后在配置中添加“fetch =”以仅添加我关注的标记,然后获取标记的标记,但是当我在git gui中查看结果时(可视化所有分支) )这两个标签在一次提交时显示为浮动(不与主干或彼此绑定)。

  4. 不确定它是否是相关的,但我在Windows 7 64位计算机上使用msysgit(git版本1.7.3.1.msysgit.0)。

    很长的问题,我知道......我只想彻底。

1 个答案:

答案 0 :(得分:4)

可能更容易克隆中继而不是其他任何内容(git svn clone -T http://path/to/trunk),然后通过修改配置文件并执行git svn fetch es来添加所需的特定标记和分支。