svn遷移到git倉庫的方案

2021-08-14 04:45:39 字數 1568 閱讀 5058

svn遷移到git倉庫並保留commit歷史記錄

最近公司要求將**庫從svn遷移到gitlab,由於之前一直是由svn做版本控制。最簡單的方式是將svn的內容export出來,然後新增到gitlab即可。但是,如果svn用的時間很長了,而且很多commit,所以就希望儲存svn commit的資訊以便做版本的控制和比較以及後期專案的維護。摸索了一天,檢視gitlab官方提供的文件中兩個方法講的都比較模糊,最後在git上找到了解決的方法。

前提: 

已安裝git 

已安裝gitlab

遷移1、環境準備

sudo apt-get install git-svn
2、建立使用者對映 

在 subversion,每個提交者在都在主機上有乙個使用者名稱,記錄在提交資訊中. 比如 blame 的輸出以及 git svn log。如果想讓這條資訊更好的對映到 git 作者資料裡,則需要從 svn 使用者名稱到 git 作者的乙個對映關係建立乙個叫做 user.txt 的檔案,用如下格式表示對映關係:

zhangsan = zhangsan @gmail.com>

lisi = lisi @gmail.com>

wangwu = wangwu @gmail.com>

在svn庫下執行該命令可以在當前資料夾生成users.txt,獲得 svn 作者的列表:

svn log ^/

--xml

| grep -p

"^| sort -u

| perl -pe

's/(.*?)<\/author>/$1 = /'

> users.txt

根據svn帳號與git帳號的對映,補充users.txt為上述格式。

3、獲取svn的倉庫到本地

通過 git svn clone 命令可以把整個 svn 倉庫匯入到乙個本地的 git 倉庫中, 但這樣匯入的**提交歷史很糟糕, 需要做一些處理. 在 clone 後面新增 –no-metadata 來阻止 git svn 包含那些 svn 的附加資訊。同時為了獲得更精確的提交者 id 和郵箱, 新增 –authors-file 引數

git

svnclone

svn://ip埠/projectname--

no-metadata--

authors

-file=users

.txt

projectname

cdprojectname

[email protected]:/.git
5、新增遠端git倉庫

在本地,將上面建立的倉庫伺服器新增為遠端伺服器並且向它推送。下面是新增遠端伺服器的例子:

git remote add origin [email protected]:/.git
6、 提交**到git倉庫

通過以下命令將本地**提交到遠端git倉庫:

git push -u origin master
參考資料: 

svn倉庫遷移到git倉庫

1.安裝git,安裝svn命令列工具 安裝svn時勾選選項 並安裝git bash,開啟git bash 2.svn log q awk f r sort u users.txt 這個時候,應該在我們的svn目錄內生成了乙個users.txt檔案,內容大致是這樣子的 注意一定要收集到所有提交者,如果...

從SVN遷移到git倉庫

1.將svn中的專案拷貝到本地 git svn clone svn位址 本地資料夾名稱 git svn clone svn localprojectname2.去到本地路徑 cd localprojectname3.建立遠端倉庫 git remote add 倉庫名稱 遠端倉庫位址 首先要在遠端倉庫...

svn倉庫分模組遷移到git倉庫

git專案跟蹤到子模組倉庫 參考鏈結 公司要求將現有svn伺服器上的專案全部遷徙到gitlab伺服器上由運維部門統一管理。剛開始也是網上找資料,網上關於這方面文章非常多,找了幾篇比較寫的詳細文章按照步驟一步一步做,最後都沒有成功,主要原因網上文章都是很早之前寫的,有些命令在新版git上面執行出錯,另...