如何把SVN遷移到Gitlab

2021-08-31 23:40:01 字數 1510 閱讀 3019

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

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

# yum install -y git-svn
保留原svn倉庫的commit等歷史記錄,需要獲取到svn使用的作者名字列表,為了獲得 svn 使用的作者名字列表,可以在checkout到本地的倉庫路徑下執行這個:

# svn co --username tom --password 123456   code

# cd code

# svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /' > /root/users.txt

這會將日誌輸出為 xml 格式,然後保留作者資訊行、去除重複、去除 xml 標記。 然後,將輸出重定向到你的 users.txt 檔案中,這樣就可以在每乙個記錄後面加入對應的 git 使用者資料,修改users.txt檔案滿足以下的格式:

# vim /root/users.txt

schacon = schacon selse = selse

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

# git svn clone    --authors-file=/root/users.txt  --no-metadata  my_project
為了將標籤變為合適的 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 git@my-git-server:myrepository.git
因為想要上傳所有分支與標籤,你現在可以執行:

$ git push origin --all
通過以上漂亮、乾淨地匯入操作,你的所有分支與標籤都應該在新 git 伺服器上,你可以去gitlab上檢視結果了。

參考資料: 

SVN及日誌遷移到Gitlab

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

SVN遷移到Gitlab實踐經歷

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

svn專案遷移到公司gitlab庫

2 開啟git bash控制台 3 git 全域性設定 git config global user.name gitlab使用者名稱 git config global user.email 你的gitlab郵箱 4 建立新版本庫 如果本地沒有從svn下拉取通過git 從svn轉殖專案 git s...