2013-06-29 04:56:13 發(fā)表評(píng)論
由于Git分布式體系結(jié)構(gòu),用戶完全可以脫離Git服務(wù)端在本地查看,編輯和提交代碼,現(xiàn)在公司Leader要求將SVN上面的數(shù)據(jù)遷移到Git上面,通過(guò)git svn命令可以將SVN里面的數(shù)據(jù)遷移到Git上面。
1.物理環(huán)境
Git-server Centos5.8 192.168.1.245
Svn-server Centos5.8 192.168.1.108
2.建立SVN用戶到git用戶的映射文件,文件格式如下:
1 2 3 | cat /tmp/userinfo.txt david=sfzhang<shifeng_zhang88@163.com> yanni=yanni<yanni_liu88@163.com> |
3.通過(guò)git svn clone克隆一個(gè)git版本庫(kù),SVN里面包含trunk,branches和tags。
1 | git svn clone svn: //192.168.1.108:9999/yanzi/ --no-metadata --authors-file=userinfo.txt --trunk=trunkmobile --tags=tags --branches=branches --ignore-refs=refs/remotes/yanzi-.* yanzi |
參數(shù)--no-metadata表示阻止git導(dǎo)出SVN包含的一些無(wú)用信息
參數(shù)--authors-file表示SVN賬號(hào)映射到git賬號(hào)文件,所有svn作者都要做映射
參數(shù)--trunkmobile表示主開(kāi)發(fā)項(xiàng)目
參數(shù)--branches表示分支項(xiàng)目,--ignore-refs表示不包含后面的分支項(xiàng)目
參數(shù)yanzi表示git項(xiàng)目名稱
4.通過(guò)git log 查看項(xiàng)目提交的歷史記錄,包括作者,日照,和提交注釋信息等。
1 2 3 4 5 | cd yanzi git log commit 3c4907782804096ea3fa3fb5419dcce610e56f1f Author: david <shifeng_zhang88 @163 .com> Date: Fri May 10 10 : 27 : 50 2013 + 0000 |
5.在git版本庫(kù)里面tag都是branches(分支),首先列出當(dāng)前所有的分支。
1 2 3 4 5 6 | cd yanzi git branch -r tags/mobile_1.0.0 tags/mobile_1.0.1 trunk yanziios1.0.1-build-2223-branch-002 |
6.手動(dòng)將branches分支轉(zhuǎn)換為tags。
1 2 | git tag mobile_1.0.0 tags/mobile_1.0.0 git tag mobile_1.0.1 tags/mobile_1.0.1 |
7.將多余的branches刪除掉。
1 2 3 4 | git branch -r -d tags/mobile_1.0.0 Deleted remote branch tags/mobile_1.0.0 (was d50002b). git branch -r -d tags/mobile_1.0.1 Deleted remote branch tags/mobile_1.0.1 (was e7b78a2). |
8.再次列出當(dāng)前的所有分支。
1 2 3 | git branch -r trunk yanziios1.0.1-build-2223-branch-002 |
9.建立git倉(cāng)庫(kù)并初始化版本庫(kù)。
1 2 3 4 | mkdir -p /data/gitdata/yanziios.git cd /data/gitdata/yanziios.git/ git init --bare Initialized empty Git repository in /data/gitdata/yanziios.git/ |
10.將yanziios.git的屬主修改為git用戶。
1 2 3 4 5 6 7 8 9 10 11 | chown git yanziios.git -R ls -l yanziios.git/ total 64 drwxr-xr-x 2 git root 4096 May 22 12:25 branches -rw-r --r-- 1 git root 66 May 22 12:25 config -rw-r --r-- 1 git root 73 May 22 12:25 description -rw-r --r-- 1 git root 23 May 22 12:25 HEAD drwxr-xr-x 2 git root 4096 May 22 12:25 hooks drwxr-xr-x 2 git root 4096 May 22 12:25 info drwxr-xr-x 4 git root 4096 May 22 12:25 objects drwxr-xr-x 4 git root 4096 May 22 12:25 refs |
11.添加遠(yuǎn)程git服務(wù)器地址。
git remote add origin git@192.168.1.245:/data/gitdata/yanziios.git
12.用git push命令推送全部的分支和標(biāo)簽信息到git服務(wù)器上面。
git push origin --tags
13.SVN遷移到Git測(cè)試,在客戶端用SourceTree工具克隆一個(gè)Git服務(wù)端倉(cāng)庫(kù)yanziios.git
14.在SourceTree圖形界面里面可以看到git用戶提交的Graph信息,描述信息(Description),日期,作者和版本號(hào)等信息。
總結(jié):
1)在運(yùn)行g(shù)it svn clone svn: 命令時(shí)出現(xiàn)下面的錯(cuò)誤:Can't locate SVN/Core.pm in @INC (@INC contains: /usr/local/git/lib/perl5/site_perl/5.8.,需要安裝subversion-perl軟件包。
2)在運(yùn)行g(shù)it pull git@192.168.1.245:/data/gitdata/yanziios.git時(shí)出現(xiàn)下面錯(cuò)誤:Can't locate Term/ReadKey.pm in @INC (@INC contains:需要運(yùn)行下面命令:
Pull up the CPAN teminal:
perl -MCPAN -e shell
Once at the cpan prompt install the needed module:
cpan> install Term::ReadKey
3)需要在本機(jī)用ssh-keygen -t rsa -C your_email_name生成KEY認(rèn)證文件,然后把公鑰id_rsa.pub追加到git服務(wù)器的git用戶家目錄authorized_keys文件里面。
4)SVN 只有trunk,branches,沒(méi)有tags導(dǎo)出方法。
git svn clone svn://192.168.1.10:8888/svnproject/ --no-metadata --authors-file=userinfo.txt --trunk=trunk --branches=branches
--ignore-refs=refs/remotes/yanziios1.* gitproject
5)git clone 遠(yuǎn)程分支git clone git@192.168.1.222:/data/gitdata/yanzi/test.git --branch test-build-1442-branch-001 test-001
6)更多的錯(cuò)誤詳見(jiàn)http://blog.csdn.net/jingwenlai_scut/article/details/4771348
本文出自 “樸實(shí)的追夢(mèng)者” 博客,請(qǐng)務(wù)必保留此出處http://sfzhang88.blog.51cto.com/4995876/1198867
聯(lián)系客服