SVN遷移到Gitlab實踐經歷

svn 遷移至git操做手冊html

項目交付、版本管理工具變動等狀況下,遷移svn舊歷史記錄有很大必要,方便後續追蹤文件的提交歷史,文件修改記錄比對等。git自帶了從svn遷移至git的工具命令,可很好的對svn上的提交歷史作遷移和映射,操做簡單方便。可是初次接觸不熟練,這裏作一個總結和記錄,內容儘可能簡單化。爭取提供給剛剛接觸git和準備遷移的用戶一個簡單易懂的方案。mysql

舊svn服務器:192.168.1.185(對生產的敬畏)git

新svn+git服務器:192.168.1.203github

我是把舊的svn經過dump下來傳到203的svn上面這須要點時間,這個原理跟mysql的dump同樣sql

把SVN上的代碼倉庫遷移到Gitlab上,實際上就是把SVN倉庫轉變成Git倉庫,而且但願能保留原SVN倉庫的Commit等歷史記錄,這一點很重要。
SVN遷移到Gitlab須要安裝git-svn 服務器

yum install -y git-svn

 

 創建users.txt(存儲svn帳號與gitlab上帳號的關聯性)svn

svn log svn://192.168.1.203 -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > ./users.txt

獲得的結果:工具

 

 

 而後開始把SVN倉庫轉變成Git倉庫,執行如下命令:gitlab

git svn clone svn://192.168.1.203/XinglvTmc/ --no-metadata --authors-file=users.txt --trunk=trunk --tags=tags --branches=branch XinglvTmc

添加GitLab到Git源信息

git remote add origin URL

注:目的地gitlab倉庫地址post

 

5. 將trunk, branches等上傳

git push origin --all

爲了將標籤變爲合適的 Git 標籤,運行

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

這會使原來在 remotes/origin/tags/ 裏的遠程分支引用變成真正的(輕量)標籤。

接下來,將 refs/remotes 下剩餘的引用移動爲本地分支:

# cp -Rf .git/refs/remotes/* .git/refs/heads/
# rm -Rf .git/refs/remotes
 
如今全部的舊分支都是真正的 Git 分支,而且全部的舊標籤都是真正的 Git 標籤。 最後一件要作的事情是,將你的新 Git 服務器添加爲遠程倉庫並推送到上面。
下面是一個將你的服務器添加爲遠程倉庫的例子:
 git remote add origin http://192.168.1.203/root/xinglvtmc.git/

 

 

git fatal: 遠程 origin 已經存在。

不當心將git遠程地址配錯了,再次配置提示如下錯誤:

fatal: 遠程 origin 已經存在。

此時只須要將遠程配置刪除,從新添加便可;

git remote rm origin

git remote add origin https://github.com/***/WebCrawlers.git

再次提交文件便可正常使用

粗心形成的小錯誤,順便說一下,若是git沒有commit就執行push操做會出現如下錯誤

fatal: unable to access 'https://github.com/***/WebCrawlers.git/': Empty reply from server

解決:只須要先commit 在 push便可

 

 

 

gitlab刪除已上傳項目中的文件夾

 

相關文章
相關標籤/搜索