[英]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%知道存儲庫的歷史記錄, svneverever
從http://blog.hartwork.org/?p=763 svneverever
是將SVN存儲庫遷移到Git時調查其歷史記錄的好工具。
盡管git-svn
(或您使用的svn2git
)更容易svn2git
,但還有一些其他原因為什么除了靈活性之外,使用KDE svn2git
而不是git-svn
更為優越:
svn2git
更好地重建歷史記錄(如果使用了正確的歷史記錄),尤其是對於具有分支和合並等更復雜歷史記錄的情況 git-svn
標簽會包含一個額外的空提交,這也會使它們不成為分支的一部分,因此,在您將--tags
給命令之前,正常的fetch
不會獲取它們,因為默認情況下,還會僅獲取指向獲取的分支的標簽。 帶有正確的svn2git標簽是它們所屬的位置 svn2git
配置,而使用git-svn
最終會丟失歷史記錄 svn2git
您還可以輕松地將一個SVN存儲庫拆分為多個Git存儲庫 svn2git
比git-svn
快svn2git
倍 您會看到git-svn
較差而KDE svn2git
較差的原因很多。 :-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.