将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上去的源代码地址了。

posted @ 2022-07-22 21:24  Franson  阅读(209)  评论(0编辑  收藏  举报