2010-04-23 29 views
7

我有一個主要的Git倉庫的一個開源項目鏡git的使用svn

我想鏡像所有提交到svn存儲庫(code.google.com上),這可能嗎?

回答

4

是的,那是可能的。使用Git's SVN features導入到存儲庫。然後你可以從那裏推回來。不過,大多數情況下,git可以有效地顯示SVN歷史,而SVN可以顯示git歷史。

3

如果你的git歷史是線性的,你可以嘗試使用git-svn。 我會嘗試使用「git svn clone」將現有(空的)SVN存儲庫導入到git中,然後將您現有的git歷史記錄重新綁定到該git歷史記錄上,並將它「git svn dcommit」。

如果你的git歷史不是線性的(包含分支和合並),你將無法在SVN中正確表示它。在這種情況下,我強烈建議您使用基於git的託管解決方案(例如github.com)。

3

我在目前的工作中遇到過這種情況。我們的主要Git存儲庫具有非線性歷史記錄,所以選擇的解決方案應該處理此問題似乎迄今爲止工作的解決方案基於gitsvn代理存儲庫。我已經安裝在主Git倉庫後,收到鉤,在它的核心有這樣的事情:

export GIT_DIR=$GITSVN_PROXY_DIR/.git 
git pull -Xtheirs file://$GIT_PRIMARY_DIR master 
git svn dcommit 

後dcommit日誌歷史被改寫。在來自主Git倉庫的下一個git pull中,您通常會遇到衝突。這就是他們的選擇 - 他們的選擇開始。這是一個有利於遠程版本變化的合併策略。在這種情況下,它允許我們自動解決衝突! :)

唯一的缺點:漂亮的SVN提交消息不是免費的。一些git hacking需要使它們包含來自主Git提交消息的所有信息。

+0

你願意分享你最後一段中提到的Git嗎? – 2012-11-01 15:29:20

1

我懷疑這可能與code.google.com,但你可以設置你自己的Subversion存儲庫,並安裝SubGit到它。

只要安裝完成,您就有一對鏈接的Subversion和Git存儲庫。任何存儲庫中的每個修改都會觸發一個SubGit掛鉤,它會自動轉換所有必要的更改。請致電documentationgit-svn comparison

SubGit是一個商業產品,但對於開源項目,您可以獲得免費的許可證。