2012-03-27 126 views
7

我正在嘗試使用svn2git將存儲庫從SVN遷移到GIT。這是一個開源項目,公共SVN資料庫網址是:http://svn.verinice.org/svnroot/。隨意測試遷移...SVN到GIT遷移失敗使用svn2git

SVN倉庫的結構是:

  • 分支機構
  • 標籤
  • TRUNK

我用下面的命令來克隆這種回購:

svn2git http://svn.verinice.org/svnroot 
    --trunk TRUNK 
    --branches BRANCHES 
    --tags TAGS 

但是這個命令只能遷移一個分支而沒有標籤。我用這些命令檢查結果:

[[email protected] git-repo]# git branch -a 
* master 
    springy 
    remotes/springy 
[[email protected] git-repo]# git tag -l 
[[email protected] git-repo]# 

如何遷移所有分支和標籤? 感謝您的幫助!

UPDATE:使用參數--authors作者-file.txt的並添加姓名和電子郵件地址與git配置svn2git工作正常

後:

git config --global user.name "your name" 
git config --global user.email "[email protected]" 

您必須添加一個line for SVN用戶authors-file.txt

svn-user-name = Full Name <[email protected]> 

git branch -a and git tag -l現在會返回所有分支和標記。

回答

10

我沒有使用svn2git的經驗,但是您可以嘗試使用git svn clone來切換到git。請注意,這將需要很長時間。有關更多信息,請參閱git help svn

請注意,這不會在git中創建適當的標籤,很可能是由於svn2git FAQ上討論的git和svn標籤的差異。相反,該工具將創建標籤分支。如果你想把它們變成適當的標籤(因爲我假設你根本不會回到SVN,這不應該造成任何傷害),有關於如何編寫腳本來做的討論here只是。

+1

+1,git-svn足以完全克隆svn回購 – 2012-03-27 17:37:32

+0

也能正常工作。分支而不是標籤是無害的 - 被接受。 – 2012-03-28 11:31:45

1

重要的是要知道,所有這些工具都建立在git的本地SVN支持git-svn之上。因此,可以直接使用git-svn進行克隆,獲取變更集等,但最好有一個腳本/工具來幫助我們完成遷移過程中的所有操作,並因此需要這些工具。

我使用svn2git包裝腳本託管在https://github.com/nirvdrum/svn2git上,以便對git遷移進行顛覆,它確實有幫助,特別是當我們想要定期從我們的Subversion存儲庫中提取變更集時,因爲我們沒有完全關閉Subversion回購站。您可以通過ruby包裝腳本,migration.rb瞭解更多信息。