將SVN上的代碼遷移到GitLab上,實際原理是將所遷移的服務器上,拷貝SVN上的相關代碼,在服務器上生成Git相關倉庫,然后推送到GitLab倉庫,並保存SVN相關的提交記錄,分支,標簽等信息。
一、安裝git-svn
首先安裝遷移所需要的工具git-svn,通過以下命令行進行安裝。
apt-get install -y git-svn或者yum install -y git-svn
我們在原來的svn教程基礎上,用shaw001用戶新增了testMeg.txt、commit-shaw001.txt文件,用shaw002用戶新增了commit-shaw002.txt文件,並修改了兩個文件,svn提交記錄如圖所示:
二、生成用戶映射文件
保留原SVN倉庫的Commit等歷史記錄,需要獲取到SVN使用的作者名字列表,為了獲得 SVN 使用的作者名字列表,可以通過以下命令行,獲取SVN相關用戶信息:
svn co --username shaw001 --password shaw001 svn://192.168.109.128/ code
以上紅色部分為可變變量,說明:
--username:后頭跟svn用戶名。
--password:后頭跟svn用戶相關密碼
svn://192.168.109.128/:為SVN倉庫地址
code:文件夾,存放SVN倉庫相關文件夾
執行命令后會將svn上的相關文件代碼存放到code文件夾。進入code文件夾,可以看到,我們在svn存放的一些文件信息。
接着,通過以下命令,生成svn用戶列表:
svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /' > /home/svn/users.txt
紅色部門為用戶列表文件存放的路徑。期間要輸入svn的用戶名和密碼。
執行命令后我們在/home/svn路徑下會多出一個users.txt的文件。
打開后,我們會看到里頭有svn的用戶。
三、修改用戶列表,配置與GitLab用戶映射關系
我們登陸到GitLab上,新建兩個用戶shaw001和shaw002,並且email設定為shaw001@example.com和shaw002@example.com
修改users.txt文件,配置對應關系:
格式如下:
svn用戶 = GitLab用戶<GitLab用戶郵箱>
四、將svn倉庫變成GitLab倉庫
在服務器上拷貝svn代碼並轉成GitLab倉庫。通過以下命令:
git svn clone svn://192.168.109.128/ --authors-file=/home/svn/users.txt --no-metadata myproject
期間也是要輸入svn密碼的:
執行完文件信息如下:
五、創建GitLab項目接收代碼
在gitlab創建testsvn項目用來接收svn代碼
執行分支添加:
git remote add origin git@192.168.109.128:shaw001/testsvn.git
然后推送到遠端:
git push origin –all
有時候執行過程中會提示:無法推送一些引用到”xxx”
執行以下命令:
git push -u origin +master
這時候要添加sshkey。這步驟省去,添加完后,重新執行下。這兒添加ssh key略去,添加SSH key之后重新執行:
登錄gitlab查看下,相關的提交記錄
文件已經同步了
同時相關的提交記錄也同步了。完成。