2013-04-18 45 views
0

我們正在從項目中的svn切換到git。已被移動的git-svn克隆回購?

現在我們想要移動的svn回購之一,有很長的歷史,我們想保持。 所以我試着做了git-svn clone,它運行良好。

但是,svn回購在其歷史上已經移動了三次。

整個回購的佈局是這樣的;

repo_root/ 
trunk/ 
    projA_v1 (existed in the beginning) 
    projA_v2 (then moved to v2) 
    projA_v3 (and finally to v3) 
    projB 
    projC 
branches/ 
    projA_b1 
    projA_b2 
    projB_b1 
    projC_b1 
tags/ 
    projA_t1 
    projB_t1 
    projC_t1 

該項目最初名爲projA_v1,然後轉移到v2,最後到v3。

現在,當我們做git-svn克隆時,我們只能得到自從上次移動2到3以來的歷史。 如果我們檢查svn中的日誌,我們會正確地看到整個歷史。

我能做些什麼來獲得整個歷史?這裏有大約3年的歷史遺失,如果可以的話,我們寧願保留它。

更新: 我試圖做的整個回購git-svn克隆現在從repo_root。我想我可以做到這一點,然後用Detach (move) subdirectory into separate Git repository中的指示修剪由此產生的git回購,它似乎運作良好。 (修剪位至少)

雖然還存在問題。分支將不會正確行事..我想這是因爲git-svn不會將它們識別爲分支,因爲其中一個分支中的內容不是整個中繼的副本,而只是中繼的一部分。有任何想法嗎?

在一個理想的世界中,我最終會得到一個只包含projA,包含projA_v1和v2的歷史記錄,以及projA分支和標籤中的歷史記錄。

回答

1

我找到了一種方法,對我的工作,但它是非常「非一般」,所以我不願在這裏張貼...

我發現我的工作是編輯.git/config當項目被感動了。我做了git svn fetch -r來修改它的移動,然後編輯配置。

在我的情況下,項目從trunk/v2移動到branch/v3到trunk/v3,最後一步對我來說是最大的問題。我在配置中翻轉樹幹和分支,以便從分支/ v3移動到樹幹/ v3看起來像是一個分支。然後我得到了整個歷史。

我不得不做很長的--ignore-paths=""與所有在同一級別的其他項目。

我不認爲這種方法適用於其他情況,但如果所有其他情況都失敗,可以考慮修改config