SVN版本控制器代码迁移至Git仓库
获取svn帐号在git中的映射,使用如下命令,帐号映射保存在user.txt文件中
svn log svn仓库地址 -q | awk -F ‘|’ ‘/^r/ {sub("^ “, “”, $2); sub(” $", “”, $2); print $2"="$2" <"$2"@163.com>"}’ | sort -u > ./user.txt
使用git svn clone迁移svn仓库(保留提交记录)
git svn clone svn项目仓库地址 -r 76896:HEAD --no-metadata --authors-file=./user.txt --trunk=svnproject --branches=svnbranch --tags==svntags --no-minimize-url git仓库名称
clone命令可以指定很多参数,主要用到这些,你也可以使用git svn help查看完整的参数列表
-r指定要clone的起止版本号。
–no-metadata阻止git导出SVN包含的一些无用信息。
–authors-file必须指定svn帐号在git中的映射。
–trunk指定导出仓库的主干项目路径。
–branches指定svn的分支项目路径。
–tags指定svn的标签路径
–no-minimize-url意思是不缩小输入地址,出现Using higher level of URL: https://xxxxxxx/branch/android/project1 => https://xxxxxxxx/branch/android 错误时可以使用此命令
注意:clone命令需要管理员权限,否则会遇到下面的异常:
couldn’t truncate file … at line xxxx. 你要做的就是右键使用管理员身份运行CMD,然后使用fatch继续执行导出。
git svn fatch -r xxxx:HEAD --authors-file=user.txt
到此迁移已经完成,接下来添加git远程地址,push到远程仓库
添加远程地址:git remote add origin xxx仓库地址
推送到远程仓库:git push -u origin master