2011-05-27 190 views
0

我想通过git svn将Subversion版本库中的多个项目与Subversion一起使用Git。项目结构如下所示:无法使用git svn设置Subversion版本库Git

根/

* PROJECT1/

主干/

标签/

SpecificBranchName1/

SpecificBranchName2/

Project2的/

躯干/

标签/

SpecificBranchName1/

我能够做git svn clone -s http://path/to/repo/Root/Project1 --no-follow-parent得到PROJECT1成混帐回购协议。然而,树干标签SpecificBranchName1SpecificBranchName2都在我的树结构。

如果我删除--no跟随父母标志,我得到一个错误消息说,“无法为http://path/to/repo/Root/Project1/SpecificBranchName1找到revmap”。我得到同样的消息,如果我尝试:git svn clone -T trunk -t tags -b . http://path/to/repo/Root/Project1

我并不真正需要的分支在我的git仓库,所以我试图跳过它:git svn clone -s --ignore-paths="^SpecificBranchName1" http://path/to/repo/Root/Project1,但得到了同样的错误。

从我所知道的,这个Subversion文件结构很奇怪。通常分支在./分支,但由于某些原因,它们被包括在与标签中继相同的文件路径中。无论如何要克服这一点?

回答

1

你的手腕不是一个标准的结构(当然你也自己说过),那么为什么你使用-s标志?

我建议你在svn中创建分支文件夹,然后将分支移动到那里。这可以防止你的痛苦。

如果你不能这样做,因为各种原因,你可以做一个git的int PROJECT1根,编辑的.git/config并svn-remote下改变分支部分:

branches = {SpecificBranchName1,SpecificBranchName2}:refs/remotes/branches/* 

(调整上述根据相对url是如何)

然后做提取。

+0

我希望我可以改变结构,但话又说回来,如果我能做到这一点我可能只是转换了整个回购反正Git和使用svn做掉:) – 2011-05-27 18:27:12

+0

我试着编辑git配置文件正如你上面提到的,但我仍然*无法找到http:// path/to/Root/Project1/SpecificBranchName1 *的revmap:P – 2011-05-27 18:34:46

1

如果你不需要的分支,请尝试:

git svn clone http://path/to/repo/Root/Project1 --trunk=trunk --tags=tags Project1 

也就是说,几乎与你使用第二个命令,但没有-b一部分。如果没有请求,git svn不会尝试查找分支。

之后,您可以按照manojlds的建议尝试编辑.git/config

编辑:好的,我运行了更多的测试。我用你的文件夹结构重新创建了一个svn仓库。我试图用git svn就可以了,一切都很顺利。我使用的是git 1.7.1。

我再查找字符串中Google Code Search“找不到revmaps”,并发现这一点:

sub lookup_svn_merge { 
     ... 
     my $gs = Git::SVN->find_by_url($url.$source, $url, $path); 
     if (!$gs) { 
       warn "Couldn't find revmap for $url$source\n"; 
       return; 
     } 
     ... 

我当然不会读取整个代码git svn,但我从猜测这就是Git在trunk中找到了一个合并点,并且合并来自Git不知道任何事情并且出于某种原因无法到达的路径。

我试图重现这种情况,但都成功地再次成功。可能的解决方案:

  • 升级您的Git版本,如果它不是最新的
  • 弄清楚,如果确实有一个从SpecificBranchName1在树干合并,如果是的话,只用修改一个后,初始化您的Git仓库

我希望这有助于...

+0

当我尝试:'git svn clone --tags tags --trunk trunk http :// path/to/repo/Root/Project1'我得到相同的错误:P(*无法找到http:// path/to/project/Root/Project1/SpecificBranchName1 *的revmap) – 2011-05-27 18:26:11

相关问题