2012-12-17 92 views
0

保留複製TAG的SVN歷史記錄我正在將一些SVN項目遷移到git。當'git svn clone'ing

我想克隆一個標籤到自己的git倉庫。

通過在TAG路徑上執行git svn clone,我可以將svn副本之前發生的所有歷史記錄放在第一位創建標記。

有沒有辦法在新的git項目中保留原始歷史記錄? (我可以在我選擇的IDE中瀏覽SVN歷史記錄,所以SVN似乎能夠提供所需的信息)

提醒:我不希望有類似於SVN結構的樹枝和標籤的樹幹項目。我想有一個單獨的項目只用標記和所有的歷史連接(包括標籤創建之前修訂)

回答

0

檢查--follow-parent標誌:

git svn clone --follow-parent https://path.to/svnroot/repo/tags/0.12 

編輯:

不過請注意,這git svn會只能看到克隆目錄上下文中的內容; svn-tagging通常涉及將一個目錄複製到另一個位置,所以你需要整個目錄樹(包含「trunk」和最終的「tagX」導向器),以便有足夠的上下文讓git工作。 其原因是,git會拒絕將任何內容從/複製到git-repository本身之外的路徑(這很合理)。 svn可以看到整個歷史,因爲它確實擁有完整的上下文(在服務器上,即使你只在本地機器上有部分結賬)

所以,爲了有完整的歷史到你的git svn克隆,您可能確實需要克隆整個項目(即至少包含trunk和tag-dir的目錄)。

這樣進行的方法是:

  • 做你的svn庫的完整git svn clone,與指定的主幹/標籤/分支目錄(--trunk--tags--branches標誌,如果你有一些特殊的設置或使用--stdlayout如果您的回購標準/中繼,/ tags/...,/ branches/...方式)

  • 這將給你一個git倉庫與一些git分支和git標籤,在那裏你可以刪除所有你不需要的分支/標籤想要(或者只是不要將它們推送到服務器)

+0

這沒有奏效。我的git倉庫中的第一次提交仍然是「爲3.4標記創建標記目錄」 – bestform

+0

更新了答案(並解釋了爲什麼簡單方法不起作用) –

+0

感謝您的澄清。我實際上嘗試了你的建議,但沒有成功。我想這是因爲標籤是從部分幹線創建的(閱讀:不是完全相同的副本)。 我最終做的是分別轉換主幹和標籤,並使用移植來告訴git,標籤分支出去。這樣做並不是非常乾淨,但它是我能找到的唯一途徑。 – bestform