【发布时间】:2011-10-05 23:03:00
【问题描述】:
我现在使用 git-svn 的 --ignore-paths 选项挣扎了几个小时,试图从大型存储库中仅获取某些标签。
我想在 dev 开始 fetch,看起来像
> svn ls http://192.168.0.2/svn/repo/corporation/dev
branches/
tags/
trunk/
完整标签集的存储库目录列表如下所示:
> svn ls http://192.168.0.2/svn/repo/corporation/dev/tags
Acme-4.x/
Acme-5.0/
Acme-5.1/
Acme-5.2/
Acme-5.3/
Acme-5.4/
Acme-5.5/
Acme-5.6/
Acme-5.7/
Acme-5.8/
Acme-5.9/
我想忽略 Acme-5.5 之前的所有标签。
我尝试这样初始化和获取:
> git svn init http://192.168.0.2/svn/repo/corporation/dev
> git config svn.authorsfile ../users.txt
> git svn fetch --ignore-paths="Acme-4.x|Acme-5.0|Acme-5.1|Acme-5.2|Acme-5.3|Acme-5.4"
不幸的是,我仍然在 Acme-4.x 标记中看到提取。提取通过诸如
之类的指示路径在控制台上显示A ACME4.4/source/database/mssql/components/functions/vssver.scc
我在正则表达式上尝试了一堆变体,包括我想忽略的标签的完整路径,一两个小时后变成了彻底的正则表达式颠簸和绝望。我已经为 git-svn-init 提供了 --ignore-paths 选项,但都无济于事。
有人愿意评论一下为什么正则表达式没有抑制在ignores-regex中指定的路径上的提取吗?
谢谢。
【问题讨论】:
-
您是否尝试将“
/dev/Acme-4.x”作为被忽略的路径?或者只是一个像“dev/Acme”这样的忽略路径,有点像这个测试:mirrors.kilnhg.com/Repo/Mirrors/From-Git/Git/File/t/… -
这个忽略路径 (dev/tags/Acme-4.x) 不会忽略 Acme-4.x,这个 (dev/Acme-4.x) 也不会。我看不出第二个如何忽略路径,即使忽略有效:我想忽略的路径包含“tags/”作为路径元素。
-
对不起,我的意思是
tags/Acme不是dev。 -
没问题。我也是这么想的。这也不起作用:git svn fetch --ignore-paths="tags/Acme-4.x"。一个真正令人头疼的问题,因为我使用 Perl 测试台脚本证明了正则表达式。给定 fetch 遇到的路径,我的测试平台脚本会过滤正确的路径。
-
记得使用\。正则表达式中的文字句点
标签: git