SVN倉庫遷移到Git的完美解決辦法

 

參考文章Converting a Subversion repository to Githtml

1 使用git svn clone 拷貝svn倉庫

cd ~/test_repo
git svn clone file:///home/***/Desktop/SVN/svn_repo/ -T trunk -b branches -t tags

2 新建一個git的bare倉庫

cd ..
mkdir test.git
cd test.git
git init --bare

3 將git的默認分支和svn的默認分支trunk對應起來

git symbolic-ref HEAD refs/heads/trunk

4 將test_repo推送到test.git中

cd ~/test_repo
git remote add bare ~/test.git
git config remote.bare.push 'refs/remotes/*:refs/heads/*'
git push bare

此時就完成了推送,能夠刪除test_repo了git

5 將git repo中的trunk重命名爲master

cd ~/test.git
git branch -m trunk master

6 將svn repo中的tags移動到git repo的相應位置

使用git svn clone導出版本庫的時候會將svn中的tags保存成git中的tags/**,而並非默認的tag,因此要進行移動svn

cd ~/test.git
git for-each-ref --format='%(refname)' refs/heads/tags |
cut -d / -f 4 |
while read ref
do
  git tag "$ref" "refs/heads/tags/$ref";
  git branch -D "tags/$ref";
done

7 完成遷移,獲得test.git

進入工做文件夾,執行gitlab

git clone ~/test.git

使用git進行版本管理吧spa

==========================================.net

(二)版本控制

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

最近在作svn遷移到gitlab,因爲以前一直是由svn作版本控制。最簡單的方式是將svn的內容export出來,而後添加到gitlab便可。可是,若是svn用的時間很長了,並且不少commit,咱們但願保存svn commit的信息以便作版本的控制和比較。幸虧git提供了相應的解決辦法。code

前提

  • 已安裝git
  • 已安裝gitlab

遷移

1.環境準備:

yum install -y git-svnorm

2.svn帳號與git帳號映射,users.txt

svn帳號=git帳號名稱<username@mail.com>

3.svn轉換爲git

git svn clone svn://ip端口/projectname --no-metadata --authors-file=users.txt --trunk=trunk projectname
cd projectname

4.添加git倉庫

git remote add origin git@xxx.xxx.xxx.xxx:root/projectname.git

5.提交到gitlab

git push -u origin master

參考文檔:htm

相關文章
相關標籤/搜索