svn項目遷移至gitlab


關於svn項目遷移有人可能會說,新建一個git項目,把原來的代碼直接扔進去提交不完了嗎。恩,是的,沒錯。但是為了保留之前的歷史提交記錄,還是得做下面的步驟

首先確保本地正常安裝配置好git,具體步驟不再贅述。

需要配置name和email

在git bash中采用以下命令

git config --global user.name "你的名字"

git config --global user.email "你的郵箱”

1、要遷移的項目從svn clone到本地

git svn clone -s svn://ip/項目名稱 --no-metadata

此處  -s 表示svn標准目錄結構:trunk、branches、tags的定義的項目,如果不采用標准結構,那么就需要如下參數

--trunk="svntrunk" --branches="svnbranches“ --tags=“svntags”。

根據項目trunk結構,clone語句改寫為:

git svn clone -s svn://ip/項目名稱 --no-metadata --trunk="trunk/項目名“ --branches="branches" --tags="tags"

在git bash中輸入上面語句提示輸入有該項目權限的svn賬號和密碼,輸入后等待svn拷貝到本地(項目較大時,需要數小時)

拷貝完后,cd 項目名 跳轉到項目目錄

git branch -a 查看分支事是否正確

2、將一些遠程分支遷回本地分支

實際應用中,如果項目在svn有tags標簽,先把遠程(remotes)標簽變成適合的本地git標簽,運行:

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

上面這一句,把tags去掉了remotes拷貝一份,

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

這一句刪除了帶remotes的tags,所以運行前請確認已拷貝成功。通過以上兩條命令會將原本以remotes/開頭的遠程tags變成git標簽

然后,把refs/remotes下面剩下的索引頁變成本地git分支:

cp -Rf .git/refs/tags/* .git/refs/tags/

rm -Rf .git/refs/remotes/*


3、gitlab中新建要一個名叫demo的項目

4、設置remote分支,並push

去掉默認遠程倉庫地址,把gitlab設置為默認遠程庫

git remote rm origin

git remote add origin ssh://git@192.168.224.134:30128/demo.git

上傳所有分支

git push origin -all 

----------------------------------如果你的項目就只是用gitlab管理代碼,到這里就可以了----------------------------------------


5、如果有用gerrit代碼審核工具,那么創建gerrit項目並同步gitlab的項目內容

1)、創建名為demo的項目

2)、gerrit采用docker部署,進入gerrit容器

cd /var/gerrit/review_site/git

rm -rf demo.git   //剛創建demo項目的git目錄

su-exec gerrit2 git clone --bare ssh://git@192.168.224.134:30128/demo.git   //gerrit2是在gitlab中新建demo項目后,添加的一個項目成員gerrit2

3)、配置代碼合並后自動同步gitlab代碼

跳轉到同級目錄etc/,修改配置文件replication.config

cd ../etc/

vi replication.config

文件末尾加上:

[remote "demo"]

projects = demo

url = ssh://git@192.168.224.134:30128/demo.git

push = +refs/heads/*:refs/heads/*

push = +refs/tags/*:refs/tags/*

push = +refs/changes/*:refs/changes/*

threads = 3

 


免責聲明!

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



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