使用 svn2git 從 SVN 遷移到 Git

svn2git 是一個 Ruby 包裝器,它通過 git-svn 圍繞 git 的本機 SVN 支援,幫助你將專案從 Subversion 遷移到 Git,保留歷史記錄(包括 trunk,tags 和 branches 歷史記錄)。

例子

要使用標準佈局(即儲存庫根級別的分支,標記和主幹)遷移 svn 儲存庫,請執行以下操作:

$ svn2git http://svn.example.com/path/to/repo

要遷移不在標準佈局中的 svn 儲存庫:

$ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --tags tags-dir --branches branches-dir

如果你不想遷移(或沒有)分支,標籤或主幹,你可以使用 --notrunk--nobranches--notags 選項。

例如,$ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --notags --nobranches 將僅遷移主幹歷史記錄。

要減少新儲存庫所需的空間,你可能希望排除曾經新增的任何目錄或檔案(例如,構建目錄或存檔):

$ svn2git http://svn.example.com/path/to/repo --exclude build --exclude '.*\.zip$'

遷移後優化

如果你在新建立的 git 儲存庫中已經有幾千個提交(或更多),則可能需要減少在遠端推送儲存庫之前使用的空間。這可以使用以下命令完成:

$ git gc --aggressive

注意: 上一個命令在大型儲存庫上可能需要幾個小時(數萬次提交和/或數百兆的歷史記錄)。