簡體   English   中英

帶有部分標簽和分支的svn2git遷移

[英]svn2git migration with part of tags and branches

我們有一個具有30,000個修訂版的舊SVN回購。 它包含一個帶有3個分支的projectX,其名稱分別為branchA,branchB,branchC

自修訂版20000開始存在3個分支。

我們的倉庫的設置如下:

https://server/repo/projectX/

branches/
changes/
projects/
releases/
tags/

分支包含BranchA,branchB和branchC,並且標簽包含很多標簽。 如您所見,沒有中繼線。

現在,我們要從開始到修訂版20000遷移所有數據(沒有舊的分支,標簽等)。從20000開始,我們要遷移到帶有標簽和分支以及主干(branchA分支)的結尾。

這就是我想對svn2git進行的操作

# svn2git https://server/repo/ProjectX --notrunk --nobranches --notags --revision 0:20000 --metadata

# svn2git https://server/repo/ProjectX --trunk branches/branchA --branches branches --tags tags --revision 22545:HEAD --metadata 

這是否會給出正確的結果,還是在svn2git遷移過程中未更改主干(可能將其混合),我是否應保留--notrunk並在git中決定我的--notrunk是什么? 歡迎其他輸入。

您使用的svn2git工具基於git-svn

對於一次性遷移, git-svn 不是轉換存儲庫或部分存儲庫的正確工具。 這是一個偉大的工具,如果你想使用Git的作為前端為現有的SVN服務器,但對於一次性轉換,你應該使用git-svn ,但svn2git這是該用例更加適合。

有很多名為svn2git工具,可能最好的一種是來自https://github.com/svn-all-fast-export/svn2git的KDE工具。 我強烈建議您使用該svn2git工具。 這是我所知道的最好的,它可以很靈活地處理其規則文件。

您將能夠輕松配置svn2git的規則文件,以從當前的SVN布局中生成所需的結果,包括可能存在的任何復雜歷史記錄。

您也可以輕松地一次運行為同一SVN根目錄中的不同項目創建單獨的Git存儲庫。

如果您不是100%知道存儲庫的歷史記錄, svnevereverhttp://blog.hartwork.org/?p=763 svneverever是將SVN存儲庫遷移到Git時調查其歷史記錄的好工具。


盡管git-svn (或您使用的svn2git )更容易svn2git ,但還有一些其他原因為什么除了靈活性之外,使用KDE svn2git而不是git-svn更為優越:

  • svn2git更好地重建歷史記錄(如果使用了正確的歷史記錄),尤其是對於具有分支和合並等更復雜歷史記錄的情況
  • 標簽是真實標簽,不是Git中的分支
  • 使用git-svn標簽會包含一個額外的空提交,這也會使它們不成為分支的一部分,因此,在您將--tags給命令之前,正常的fetch不會獲取它們,因為默認情況下,還會僅獲取指向獲取的分支的標簽。 帶有正確的svn2git標簽是它們所屬的位置
  • 如果您在SVN中更改了布局,則可以輕松地使用svn2git配置,而使用git-svn最終會丟失歷史記錄
  • 使用svn2git您還可以輕松地將一個SVN存儲庫拆分為多個Git存儲庫
  • 或將同一SVN根目錄中的多個SVN存儲庫輕松組合到一個Git存儲庫中
  • 正確的svn2gitgit-svnsvn2git

您會看到git-svn較差而KDE svn2git較差的原因很多。 :-)

暫無
暫無

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

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