1. 程式人生 > >從 SVN 遷移到 Git

從 SVN 遷移到 Git

準備工作

確認所有使用者的本地修改都簽入到伺服器, 將 SVN 原始碼的分支儘可能的合併到主幹, 已經發布的做好歸檔資訊, 並備份 SVN 庫。 雖然遷移到 Git 的風險不大, 但是備份一下總是好的。

安裝 Git , 這看起來是廢話, 不裝 Git 怎麼遷移?

將使用者對映到 Git

建立一個使用者對映檔案, 將 SVN 使用者對映到 Git 使用者, 這樣可以保留使用者的簽入歷史資訊, 比如使用者輸入的修改記錄等, 這個檔案看起來是這樣子的:

svnuser1 = gituser1 <gituser1@yourcompany.com>
svnuser2 = gituser2 <gituser2@yourcompany
.com>

這樣, 使用者 svnuser1 簽入的歷史資訊在遷移之後就會對映成 gituser1 , svnuser2 對映程 gituser2 。

編輯好使用者對映檔案之後, 儲存為 users.txt 。

克隆 SVN 庫

假設 svn 庫的佈局是標準的 trunk 、 branches 以及 tags , 執行下面的命令開始克隆 svn 庫:

git svn clone <svn repo url> --no-metadata -A users.txt -t tags -b branches -T trunk <destination dir name>

Git 會克隆 svn 完整的歷史記錄, 可能會需要很長的時間, 視 svn 庫的歷史而定。

轉換分支及歸檔

克隆完成之後, 所有的 svn 歸檔在 git 看來都是遠端分支 (remote tags) , 不是真正的 git 歸檔, 需要將他們手工轉換為 git 歸檔, 然後再刪除遠端分支, 對於每一個分支或歸檔, 做如下操作(以 v1.0.1 歸檔為例):

git tag v1.0.1 tags/v1.0.1
git branch -r -d tags/v1.0.1

所有的歸檔資訊處理完成之後, git 本地庫就有了完整的歷史記錄。

提交到 Git 庫

現在可以放心的將程式碼提交到自己的 git 伺服器了, 命令如下:

git remote add origin git@github.com:userid/project.git
git push origin master --tags

總的來說, 從 svn 遷移到 git 還是很容易的。