2011-06-01 47 views
5

我們目前的svn結構如下:SVN與git:如何處理我們的不規範,可能錯誤地支SVN

trunk 
-- project 
-- projectDao 
-- projectResources 
branches 
-- project-1.0 
-- projectDao-1.0 
-- projectResources-1.0 
-- project-2.0 
-- projectDao-2.0 
-- projectResources-2.0 
tags 
-- project-1.0.0 
-- ... 

更糟糕的是項目1.0從項目projectDao-1.0支projectDao(每個單獨移動提交)。理想情況下它會是這樣的。

這是提交日誌:

trunk 
-- project 
-- projectDao 
-- projectResources 
branches 
-- 1.0 
---- project 
---- projectDao 
---- projectResources 
-- 2.0 
---- project 
---- projectDao 
---- projectResources 
tags 
--1.0.0 
----project 
---- ... 

這是很有道理的方式。然後我們應該從幹線分支到1.0而不是2個不同的提交。

但是我們現在想要切換到git(永久),並且我不知道該如何開始。

我真的不知道我該怎麼做。當我只是用標準佈局克隆我的倉庫時,我得到了一些東西。

* master 
    remotes/project-1.0 
    remotes/[email protected] 
    remotes/project-2.0 
    remotes/[email protected] 
    remotes/projectDao-1.0 
    remotes/[email protected] 
    remotes/projectDao-2.0 
    remotes/[email protected] 
    remotes/projectResources-1.0 
    remotes/[email protected] 
    remotes/projectResources-2.0 
    remotes/[email protected] 
    remotes/tags/project-1.0.0 
    remotes/tags/projectDao-1.0.0 
    remotes/tags/projectResources-1.0.0 
    remotes/trunk 

這是gitg產生

This is what gitg generates

我不知道我該如何使用衍合得到這個權利,如:

* master 
    remotes/1.0 
    remotes/2.0 
    remotes/tags/1.0.0 
    remotes/trunk 
+0

請輸入「git branch -a」並在該問題中發佈該命令的完整輸出。 – ralphtheninja 2011-06-02 14:01:40

+0

看來你已經多次導入和導入到git中,這是真的嗎?例如,主人似乎是自己的一棵子樹,「綠色」也是如此。 – ralphtheninja 2011-06-02 16:01:18

回答

5

如果我理解正確,您想要將導入的分支更改爲1.0分支中的目錄。此外,當你維護你的svn倉庫時,你不會提及這是永久遷移還是git-svn結賬。

如果這只是一個git-svn checkout而且目標是繼續使用原始SVN作爲中央存儲庫,那麼我只需執行一次簽出而不使用標準佈局開關並在SVN的目錄中工作。這有點骯髒,但你在推回到SVN時沒有問題。

如果您想要轉換存儲庫,請向所有分支添加一個提交,將該分支的內容放入根目錄中的一個目錄中,以便將分支合併在一起。您不會在GIT歷史中使用舊的分支結構來釋放SVN歷史,但未來將是新風格。

只有在您想要轉換所有歷史記錄的情況下,您才需要創建目錄和重新綁定。

+0

我們會永遠遷徙。然而,這對我來說是非常新的,所以我不太瞭解如何做到這一點:_add向所有分支提交,將該分支的內容放入根目錄中,以便在分支之後合併分支。並非真正需要改變所有的歷史。 – 2011-06-02 15:00:32

+0

爲了得到一個1.0和2.0分支(對於3.0和更高版本,你可以將主分支分支到3.0分支):在這些分支上(比如Project-2.0,ProjectDao-2.0和ProjectResources-2.0或者工作副本這3個分支中的)你創建一個目錄Project,第二個ProjectDao,第三個ProjectResources與第三個對應的主目錄,並將所有文檔分別移動到那些,然後提交,然後合併到新的2.0分支中。 – LaPingvino 2011-06-02 15:07:08

+0

謝謝,那是我所需要的 – 2011-06-02 16:50:54

0

你應該能夠變基這些分支,你認爲適合與混帳。只要你可以從svn得到完整的歷史記錄到git,從你認爲合適的任何提交中創建分支1.0和2.0並且從那裏繼續建立你想要的任何結構是一件小事。

+0

你能解釋多一點,我不明白如何做到這一點。我在第一篇文章中添加了我目前擁有的分支結構。 – 2011-06-02 13:05:43

+0

它看起來有點怪異的命名爲「遙控器/項目-1.0」等(它幾乎看起來像一個遠程分支,這將看起來像「遙控器/起源/主」),但我想這是當你轉換時發生了什麼從svn到git。 – ralphtheninja 2011-06-02 14:03:13