簡體   English   中英

Svn - > git遷移與幾個主干/分支/標簽

[英]Svn -> git migration with several trunk/branches/tags

我有一個SVN存儲庫,具有以下當前結構:

  • PROJECT1
    • 分支機構
    • 樹干
    • 標簽
  • 項目2
    • 分支機構
    • 樹干
    • 標簽

最初有這種結構:

  • 項目
    • 分支機構
    • 樹干
      • proj1
      • proj2
    • 標簽

也就是說,該項目被分成兩個獨立的“子存儲庫”(或者你想稱之為的任何東西)

有沒有辦法將此遷移到git 而不會丟失歷史記錄 對於這種情況,svn2git會比git-svn更好嗎? 還有其他遷移工具嗎?

編輯 :我按照建議嘗試了git svn clone,但是,正如我想的那樣,它並沒有遵循從舊結構到新結構的轉變。 它只導入了新結構的修訂版。

首先我將主干轉換為git:

git svn clone url-to-project -s

然后我轉換了每個項目:

git svn clone url-to-project1 -s
git svn clone url-to-project2 -s
...

然后,對於每個項目,我使用移植物和過濾器分支從主干附加了先前的歷史。

我剛剛在博客上寫了這篇文章

svn2git只是在下面使用“git svn”,所以它本身不會“更好”。 它只是制作漂亮的標簽和分支,並清理干凈的svn。 如果這就是你想要的,我會繼續單獨在兩個子存儲庫上使用它。 它將獲得所有適當的歷史記錄。

你有沒有試過內置的

git svn clone

GIT-SVN

您的“當前”結構已經包含了之前結構的所有歷史記錄。 因此,使用git svn clone克隆每個項目應該可以正常工作。

沒有必要告訴Git在trunk目錄下有多個項目的先前結構。

Git的優點在於,您可以根據自己的喜好嘗試遷移,直到您對結果感到滿意為止。

假設使用標准的Subversion布局,使用git svn clone -s SVN_REPOS讓git克隆Subversion存儲庫。 您將獲得一個名為master的本地git分支,但是git branch -a將顯示所有遠程分支。 Subversion分支只有分支名稱,但標簽的分支名稱為tags/tag_name

在本地克隆時不要重復使用分支/標記名稱! git不喜歡那樣。

這本指南對我幫助很大。

http://www.viget.com/extend/effectively-using-git-with-subversion/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM