2010-07-19 116 views
3

我有一個用GIT開發的項目,有幾百個提交。我只有一個主分支,提交是線性的。如何將現有的GIT項目導入SVN,保留主分支上的GIT歷史記錄?

現在我被要求將源代碼放入現有的SVN中,最終我想保留主提交歷史記錄(消息和差異,作者由SVN訪問預設)。

這就像我需要重播整個提交歷史到SVN。有沒有辦法從GIT做到這一點或多或少是自動的?

我想到了一個想法,但我不知道如何處理它:我在SVN中創建一個新的空trunk/,用GIT克隆它(即一個空的GIT SVN克隆)並重播我的主變更而不是dcommit。

未來我會繼續與我的GIT分支合作,並將其與SVN同步。

+2

出於好奇,你爲什麼要從git轉到svn? – 2010-07-19 14:50:12

+0

我也很好奇 – 2010-07-19 14:53:56

+1

@Zachary:在我看來,我並沒有移動這個項目:我被我開發這個項目的人問到將它放到他們的SVN中。而且,理想情況下,我想保留歷史。我將來會繼續使用GIT進行開發,但隨後會定期推送到他們的SVN。把所有東西*以某種方式*到SVN中,並用GIT檢查出來對我來說也不錯。 – mark 2010-07-19 16:00:18

回答

2

谷歌有一個非常詳細的教程,如何做到這一點here。它用於導入Google代碼,但可用於任何svn回購。

+0

像魅力一樣工作,謝謝! – mark 2010-07-19 21:39:58

+1

不幸的是,該頁面不再存在。你知道另一個資源嗎? – exilit 2016-03-08 13:57:29

0
  1. 用一些提交設置空的SVN項目。
  2. 「git svn clone」它。
  3. 在幾乎空的git-svn項目中導入歷史記錄(此處爲rebase)
  4. 「git svn dcommit」。

問題:

  1. 時間戳被打破,作者姓名被破壞。
  2. 「git svn dcommit」在提交dcommit過多的情況下效果不佳。拆分爲每包約20次提交是首選。
相關問題