将svn源代码有提交记录地切换到git
1.准备物料
a.待切换的svn源代码地址:http://xxx/.../Branches/svnproject
b.目标git源代码地址(需要事先在git上手动创建好git工程):https://xxx/.../gitproject.git
c.gitbash(windows上使用bash工具,linux可忽略)
2.打开gitbash工具,创建/d/git/myspace/目录
cd /d/git/myspace/
3.获取svn提交作者并做映射
svn log http://xxx/.../Branches/svnproject --quiet | awk '/^r/ {print $3}' | sort | uniq >./authors.txt
记事本打开authors.txt得到如下提交作者信息:
按照如下格式做映射并保存
2118645 = 张三 <wkh@163.com> 2237141 = 李四 <237141@163.com> 2256660 = 王五 <256660@163.com> 2260785 = Lily <260785@163.com> 227701 = 未知 <27701@163.com> SVN_Admin = SVN_Admin <SVN_Admin@163.com>
4.获取svn历史版本信息到本地
git svn clone http://xxx/.../Branches/svnproject -r 2192188:HEAD --no-metadata --authors-file ./authors.txt gitproject
因完整获取svn提交历史信息非常耗时,故红色处标记了从指定svn版本号到最新版本。如果要全量获取,去掉红色文本即可
5.git中可查看到原svn中的历史提交信息
cd gitproject
git log
6.把转换后的本地Git仓库推到公共的Git服务器
git remote add origin https://xxx/.../gitproject.git git push origin master --tags
所有的标签和主干现在都应该整齐干净的躺在新的Git服务器里了。如果要将分支也同步到远程Git服务器,将--tags改为--all。
最后可以在git仓库中查看push上去的源代码地址了。