SVN遷移到Gitlab實踐經歷

2022-07-13 10:09:11 字數 1956 閱讀 3494

svn 遷移至git操作手冊

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

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

新svn+git伺服器:192.168.1.203

我是把舊的svn通過dump下來傳到203的svn上面這需要點時間,這個原理跟mysql的dump一樣

把svn上的**倉庫遷移到gitlab上,實際上就是把svn倉庫轉變成git倉庫,並且希望能保留原svn倉庫的commit等歷史記錄,這一點很重要。

svn遷移到gitlab需要安裝git-svn

yum install -y git-svn
建立users.txt(儲存svn賬號與gitlab上賬號的關聯性)

svn log svn://

192.168.1.203 -q | awk -f '|' '/^r/ ' | sort -u > ./users.txt

得到的結果:

然後開始把svn倉庫轉變成git倉庫,執行以下命令:

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
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 伺服器新增為遠端倉庫並推送到上面。下面是乙個將你的伺服器新增為遠端倉庫的例子:

fatal: 遠端 origin 已經存在。

此時只需要將遠端配置刪除,重新新增即可;

git remote rm origin

git remote add origin

再次提交檔案即可正常使用

粗心造成的小錯誤,順便說一下,如果git沒有commit就執行push操作會出現以下錯誤

fatal: unable to access '/': empty reply from server

解決:只需要先commit 在 push即可

如何把SVN遷移到Gitlab

把svn上的 倉庫遷移到gitlab上,實際上就是把svn倉庫轉變成git倉庫,並且希望能保留原svn倉庫的commit等歷史記錄,這一點很重要。svn遷移到gitlab需要安裝git svn yum install y git svn保留原svn倉庫的commit等歷史記錄,需要獲取到svn使用的...

SVN及日誌遷移到Gitlab

1 svn準備遷移到gitlab的工作 1.1 將svn提交記錄匯出,如下圖操作 svn log log.txt 匯出後將生成乙個提交記錄的log.txt的檔案,檔案格式如下所示 1.2 然後建立svn2git.txt檔案,作用是svn使用者名稱與git使用者名稱的乙個對映檔案。格式如下 示例 we...

svn遷移到git實踐

服務端用的是windows版gitblit,svn版本上的分支一律不保留 1 先登入gitblit管理頁面,建立倉庫 abc.com 2 在本地www目錄下用git bash執行 git svn clone no metadata abc 結束後www目錄下會多出乙個名為abc目錄,注意那個trun...