SVN倉庫遷移至Git,保留commit提交記錄

最近公司要將SVN服務遷移,前段時間剛把SVN服務從windows服務器遷移到Linux。

現在項目越來越多,加之SVN的集中式管理,不支持分佈式,分支切換麻煩,Git支持分佈式開發,快照式數據,速度快,主幹分支切換方便。給領導建議了一下把倉庫遷移到git,領導的要求就是可以遷移,但是不能丟提交記錄。經過自己的研究嘗試,最終把SVN倉庫成功遷移到git,下面將遷移過程分享出來。

一.軟件安裝及git配置

1.git安裝

2.gitlab安裝(我們使用的gogs,具體根據公司內部的架構和情況選擇,中小企業,並且團規規模不是很大的情況下gogs是足夠使用了)

3.git賬號配置

在你準備作爲git本地倉庫的文件夾目錄->鼠標右鍵->Git Bash Here  進入git命令行,

      輸入如下命令:

      git config --global user.name "username"

      git config --global user.email "[email protected]"

      username是gitlab下注冊的用戶名,[email protected]是gitlab下注冊的郵箱

      查看配置:

      git config --list

   4.svn賬號與git賬號映射

     在當前文件夾下創建文件userinfo.txt,文件內容如下斜體:   (注:svn賬號3在svn中有記錄,但無git賬號,提交記錄中涉及到的svn賬號需要全部列舉出來,否則會報錯。提交記錄可以選擇指定記錄到最新記錄,下面會有說明)

svn用戶名1=git用戶名1<git郵箱[email protected]>
svn用戶名2=git用戶名2<git郵箱[email protected]>
svn用戶名3=git用戶名3<git郵箱[email protected]>

 

二. svn項目導出到本地git倉庫

1.在存放userinfo.txt的同級目錄下新建一個文件夾,名稱最好命名成你的項目名稱

2.繼續在Git Bash執行下面命令:

git svn clone -r 1126:HEAD svnurl --no-metadata --authors-file=userinfo.txt template

注:此處的 -r 1126:HEAD 代表從svn的1126版本到最新版本的提交記錄,避免從第一個版本拉取數據量過大,操作耗時高。svnurl是你的svn項目地址。如果需要拉取所有記錄,可去除 -r 1126:HEAD 

此處執行命令後會彈出一個窗口,需要登錄兩次,第一次是登錄本地電腦,使用你本地的計算機用戶和密碼就好;第二步是登錄gitlab的用戶名密碼,這個根據自己註冊的用戶密碼填寫就好。

三、在gitlab上創建倉庫(我們用的是gogs)

下圖紅框的地址爲後面使用的giturl

 

四、關聯git遠程倉庫

導入成功後,輸入如下命令:

cd template

git remote add origin giturl

注:giturl是你的git項目地址

查看關聯情況:

git remote -v

如果關聯有誤,可以刪除關聯

git remote rm origin

五、提交記錄至git

提交記錄之前,先拉取遠程git項目文件(README.md),否則直接提交會報錯。若倉庫中沒有文件,執行此步沒有提示。

git pull --rebase origin master

拉取成功後,執行push命令

git push -u origin master
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章