把svn上的**倉庫遷移到gitlab上,實際上就是把svn倉庫轉變成git倉庫,並且希望能保留原svn倉庫的commit等歷史記錄,這一點很重要。
svn遷移到gitlab需要安裝git-svn
# yum install -y git-svn
保留原svn倉庫的commit等歷史記錄,需要獲取到svn使用的作者名字列表,為了獲得 svn 使用的作者名字列表,可以在checkout到本地的倉庫路徑下執行這個:
這會將日誌輸出為 xml 格式,然後保留作者資訊行、去除重複、去除 xml 標記。 然後,將輸出重定向到你的 users.txt 檔案中,這樣就可以在每乙個記錄後面加入對應的 git 使用者資料,修改users.txt檔案滿足以下的格式:# svn co --username tom --password 123456 code
# cd code
# svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /' > /root/users.txt
然後開始把svn倉庫轉變成git倉庫,執行以下命令:# vim /root/users.txt
schacon = schacon selse = selse
# git svn clone --authors-file=/root/users.txt --no-metadata my_project
為了將標籤變為合適的 git 標籤,執行
這會使原來在 remotes/origin/tags/ 裡的遠端分支引用變成真正的(輕量)標籤。# cd my_project
# cp -rf .git/refs/remotes/origin/tags/* .git/refs/tags/
# rm -rf .git/refs/remotes/origin/tags
接下來,將 refs/remotes 下剩餘的引用移動為本地分支:
現在所有的舊分支都是真正的 git 分支,並且所有的舊標籤都是真正的 git 標籤。 最後一件要做的事情是,將你的新 git 伺服器新增為遠端倉庫並推送到上面。 下面是乙個將你的伺服器新增為遠端倉庫的例子:# cp -rf .git/refs/remotes/* .git/refs/heads/
# rm -rf .git/refs/remotes
# git remote add origin git@my-git-server:myrepository.git
因為想要上傳所有分支與標籤,你現在可以執行:
$ git push origin --all
通過以上漂亮、乾淨地匯入操作,你的所有分支與標籤都應該在新 git 伺服器上,你可以去gitlab上檢視結果了。
參考資料:
SVN及日誌遷移到Gitlab
1 svn準備遷移到gitlab的工作 1.1 將svn提交記錄匯出,如下圖操作 svn log log.txt 匯出後將生成乙個提交記錄的log.txt的檔案,檔案格式如下所示 1.2 然後建立svn2git.txt檔案,作用是svn使用者名稱與git使用者名稱的乙個對映檔案。格式如下 示例 we...
SVN遷移到Gitlab實踐經歷
svn 遷移至git操作手冊 專案交付 版本管理工具變更等情況下,遷移svn舊歷史記錄有很大必要,方便後續追蹤檔案的提交歷史,檔案修改記錄比對等。git自帶了從svn遷移至git的工具命令,可很好的對svn上的提交歷史做遷移和對映,操作簡單方便。但是初次接觸不熟練,這裡做乙個總結和記錄,內容盡量簡單...
svn專案遷移到公司gitlab庫
2 開啟git bash控制台 3 git 全域性設定 git config global user.name gitlab使用者名稱 git config global user.email 你的gitlab郵箱 4 建立新版本庫 如果本地沒有從svn下拉取通過git 從svn轉殖專案 git s...