2011-05-27 191 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

相關問題