svn 遷移至git操作手冊
專案交付、版本管理工具變更等情況下,遷移svn舊歷史記錄有很大必要,方便后續追蹤檔案的提交歷史,檔案修改記錄比對等,git自帶了從svn遷移至git的工具命令,可很好的對svn上的提交歷史做遷移和映射,操作簡單方便,但是初次接觸不熟練,這里做一個總結和記錄,內容盡量簡單化,爭取提供給剛剛接觸git和準備遷移的用戶一個簡單易懂的方案,
遷移流程圖:

這里分為兩步來說明,第一步是比較簡單遷移要件準備,已經準備好的用戶可直接略過,直接進入第二步進行遷移操作,
|第一步:準備作業:
① svn專案(SvnProject)地址及訪問此svn專案權限賬號:
地址:https://mytest.cn/svn/project/Example/ SvnProject /
賬號:test/test@123
② git新建一個倉庫(如:GitProject)存放遷移專案
遠程倉庫地址:https://192.165.22.33/migrate/GitProject
賬號/密碼: my_test/mytest@123
③ 待遷移svn專案有過提交記錄的用戶清單:
如果具備①的svn賬號又沒有svn管理員權限,可以通過匯出所有提交歷史并用代碼提取一下用戶清單(開發人員都懂,不贅述),獲取到的用戶清單為user1,user2,user3,創建檔案users.txt,按如下格式存入svn賬號與git賬號的映射關系

“=”前為svn賬號,“=”號后為git賬號,尖括號為git用戶的郵箱,尖括號及郵箱可無,
注:如果有些用戶已經離職了,其賬號在git中沒有,這里依然可以映射至不存在的git用戶,
如果SVN用戶未全部列舉,執行遷移時會報如下錯誤:

報這個錯誤時可簡單粗暴洗掉檔案夾重新匯出即可,
④ :電腦上安裝git客戶端,客戶端下載地址:
https://www.git-scm.com/download/
下載后安裝客戶端,安裝及配置參考:
https://blog.csdn.net/u013295518/article/details/78746007
|第二步:資料遷移
一:匯出svn記錄到本地
在你存放users.txt的同級目錄新建一個檔案,命名為你的專案名:GitProject

右鍵檔案空白處,單擊Git Bash Here

在bash界面,輸入git拷貝命令:
git svn clone https://mytest.cn/svn/project/Example/MyProject/ --no-metadata --authors-file=users.txt GitProject

引數說明:
- git svn clone 是Git的遷移命令
- https://mytest.cn/svn/project/Example/MyProject/是svn服務器地址,注意需要到遷移專案的根目錄一級
- --no-metadata 引數去除了svn上很多雜亂的引數資訊,保留了清晰簡潔的提交記錄資訊,
- -file=users.txt 為你的用戶映射檔案夾;
- GitProject是剛剛新建的空白專案名檔案夾
第一次操作,會多次要求賬號密碼:請注意每次提示資訊,第一次密碼輸入是作業系統的用戶密碼,第二次為svn賬號和密碼,第三次為git的賬號密碼,注意按提示輸入,
二:關聯git遠程倉庫
執行
cd GitProject
進入遷移專案路徑下:
執行:
git remote add origin git@192.165.22.33:migrate/GitProject.git
后即已關聯遠程git倉庫,執行可查看關聯情況
git remote –v
未關聯時:

關聯成功后:

如果關聯錯了,可以使用 git remote rm origin洗掉錯位關聯后重新關聯即可
git remote rm origin
三:提交記錄至git
svn專案中的所有提交記錄和歷史版本都已經匯出本地并關聯了遠程倉庫,現在只需要將這些記錄推送至遠程倉庫即可,
執行
git push -u origin master
命令輸入后需要輸入git賬號\密碼
執行成功后,就完成了整個遷移程序,登錄git網站,可以看到空白倉庫中多了很多提交記錄和檔案,
參考資料:
github推送專案常見錯誤fatal: remote origin already exists
https://blog.csdn.net/dreamskyforjava/article/details/24322533
Git 與其他系統 - Git 與 Subversion
https://git-scm.com/book/zh/v1/Git-%E4%B8%8E%E5%85%B6%E4%BB%96%E7%B3%BB%E7%BB%9F-Git-%E4%B8%8E-Subversion
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/219394.html
標籤:其他
