为什么git-svn会随机将我的根目录更改为上级目录?

10

我正试图让git-svn在一个私有的shadowcat svn服务器上工作。

git svn clone -s http://dev.catalystframework.org/repos/Catalyst/Catalyst-Plugin-ConfigLoader/
Initialized empty Git repository in /home/ecarroll/code/perl/foo/Catalyst-Plugin-ConfigLoader/.git/
Using higher level of URL: http://dev.catalystframework.org/repos/Catalyst/Catalyst-Plugin-ConfigLoader => http://dev.catalystframework.org/repos/Catalyst

为什么它不能工作?看起来http://dev.catalystframework.org/repos/Catalyst/Catalyst-Plugin-ConfigLoader/具有标准的布局。

有没有一种明智简单的方法让git从svn仓库拉取?


对我来说很好用(Git 1.7)。你提供了命令的完整输出吗? - Adam Byrtek
2个回答

15

由于Catalyst-Plugin-ConfigLoader项目已经迁移到Git,我现在回答有些晚了,但如果有人在不同的svn项目中遇到类似的问题,我会回答。

git svn 试图通过搜索svn存储库的根目录并使用该根目录代替您提供的URL来帮助您。我觉得这很烦人,但幸运的是有一个解决方法:使用 --no-minimize-url选项。

git svn文档(git help svn)中获取:

--no-minimize-url

当跟踪多个目录(使用--stdlayout--branches--tags选项)时,git svn 将尝试连接到Subversion存储库的根(或允许的最高级别)。默认情况下,如果整个项目在存储库中移动,则此默认值可以更好地跟踪历史记录,但可能会在存在读取访问限制的存储库上引起问题。传递--no-minimize-url将允许git svn接受URL,而无需尝试连接到更高级别的目录。当仅跟踪一个URL/分支时,此选项默认关闭(它没有多大用处)。


0
我遇到了类似的问题,并使用了 --no-minimize-url 选项。这使得克隆成功了,但是大约一半的标签都丢失了。原来禁止克隆向上一级意味着它无法看到之前发生的存储库重命名。一旦我移除了 --no-minimize-url 选项,缺失的标签就出现了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接