2009-01-31 108 views
39

除此之外的理由,有沒有一種合理的方式來轉換整個git倉庫顛覆將倉庫從git轉換爲subversion

我可以遷移顛覆混帳,以及兩者之間交換的變更找到信息僅供噸,但不這樣做,整個git倉庫到SVN的簡單轉換。

+1

重複在這裏:http://stackoverflow.com/questions/661018/pushing-an-existing-git-repository-to-svn/1056817#1056817 – cmcginty 2009-08-10 22:32:58

+15

傷心的是,你必須以「這樣做的原因」爲了防止火焰戰爭等...... – 2012-11-09 20:15:24

回答

14

轉換這個方向的一般問題是,Git存儲庫可以包含的不僅僅是一個線性的修訂歷史記錄,正如Subversion所期望的。具有不同歷史和頻繁合併提交的多個祖先都是可能的,這在Subversion存儲庫中很難表現出來。

對於在Git存儲庫中確實存在線性歷史記錄的簡單情況,可以使用git-svn dcommit將該批次推送到空的Subversion存儲庫。

+2

對不起,幾年後再次攪動這個,但你能舉一個具體的例子來說明如何做到這一點?假設我在〜/ my-git-repo有一個git倉庫的克隆,並且我想將提交歷史複製到一些SVN倉庫中,比如說svn://foo.com/empty-svn-repo/ – 2012-11-09 21:13:50

6

SubGit很容易執行。

$ svnadmin create svn.repo 
$ subgit configure svn.repo 
$ nano svn.repo/conf/subgit.conf to specify a path to your bare repository (you may use "git clone --bare <URL>" if you have none locally) 
$ subgit install svn.repo 

轉換後您的SVN和鏈接Git倉庫將在同步:每推送操作將被轉換爲SVN承諾,反之亦然。爲了打破翻譯運行

$ subgit uninstall svn.repo 

雖然翻譯SubGit會盡量保存提交日期,標籤,忽略,合併,EOLS,樹枝等,因爲它是可能的。我無法對git-svn存儲庫說同樣的話。