使用 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
注意: 上一個命令在大型儲存庫上可能需要幾個小時(數萬次提交和/或數百兆的歷史記錄)。