②將SVN遷移到GitLab-多分支多標簽遷移


之前我們介紹了《①將SVN遷移到GitLab-單分支遷移》,文中研究了svn遷移到git單分支的操作過程,本文針對實際開發過程中svn使用到的trunk、branches、tags情況進行遷移,本文的svn代碼情況如圖所示:

 

具體的可以參考博文,《SVN的branches、trunk、tags使用》。

一、拷貝svn相關倉庫代碼到本地

svn co --username shaw001 --password shaw001 svn://192.168.109.130/  code

期間要輸入svn賬號密碼確認,

 

成功之后,會生成一個code文件夾,里頭也檢出了相關分支代碼記錄。

二、生成用戶列表,並配置相關svn和gitlab用戶對應關系

svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /' > /home/svn/users.txt 

紅色字體標注路徑文件可修改。

 

查看下相關的文件內容:

  

修改與gitlab的對應關系,修改后如下:

 

三、拷貝svn代碼,並本地生成gitlab倉庫

通過以下命令拷貝svn代碼生成本地gitlab倉庫:

git svn clone svn://192.168.109.130/ --authors-file=/home/svn/users.txt  --no-metadata  -s branches

  

  

四、配置遠程倉庫tags和branches相關配置

進入到branches文件夾里頭,配置相關tag記錄:

cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/ rm -Rf .git/refs/remotes/origin/tags

這兒要注意下,有時候會提示沒有.git/refs/remotes/origin/tags/*目錄,這是就要自己去git目錄里頭查看具體是什么目錄,有可能是.git/refs/remotes/tags/*路徑 

配置相關分支記錄

cp -Rf .git/refs/remotes/* .git/refs/heads/
rm -Rf .git/refs/remotes

 

五、遠程創建branches項目進行代碼接收,並設置gitlab目標推送地址

登錄gitlab創建一個branches項目

 設置推送地址:

git remote add origin git@192.168.109.130:shaw001/branches.git

六、配置gitlab全局用戶變量

配置全局用戶變量,另外還得配置sshKey密鑰進行免密推送。

git config --global user.name shaw001
git config --global user.email shaw001@example.com

 

七、推送分支和標簽到遠程

推送分支到遠程gitlab倉庫

git push origin --all

 

 

 從記錄可以看出,分支已經推送了。接下來推送標簽到遠程gitlab倉庫

git push origin --tags

 

 到gitlab查看下相關記錄。

 可以看到代碼、分支、標簽都已經同步到gitlab上了。我們看下提交記錄:

 ok,SVN多分支、多標簽遷移gitlab就介紹完了,下篇文章介紹如果svn繼續開發,如何增量同步代碼到gitlab上。 

完整流程腳本如下: 

1、拷貝svn相關倉庫代碼到本地
svn co --username shaw001 --password shaw001 svn://192.168.109.130/  code

2、生成用戶列表,並配置相關svn和gitlab用戶對應關系
svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /' > /home/svn/users.txt

shaw001@example.com
shaw002@example.com

3、拷貝svn代碼,並本地生成gitlab倉庫
git svn clone svn://192.168.109.130/ --authors-file=/home/svn/users.txt  --no-metadata  -s branches

4、配置遠程倉庫tags和branches相關配置
cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/
rm -Rf .git/refs/remotes/origin/tags

cp -Rf .git/refs/remotes/* .git/refs/heads/
rm -Rf .git/refs/remotes

5、設置gitlab目標推送地址
git remote add origin git@192.168.109.130:shaw001/branches.git

6、配置gitlab全局用戶變量
git config --global user.name shaw001
git config --global user.email shaw001@example.com

7、推送分支和標簽到遠程
git push origin --all
git push origin --tags

 參考:http://www.imooc.com/article/details/id/30301


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM