记一次svn项目迁移到git的报错解决

前提

将svn代码及其分支、提交记录迁移到git仓库。如果只是迁移代码,直接git init&&git commit就好了。

操作

git svn clone svn地址 --authors-file=users.txt --no-metadata --prefix "" -s 目标git目录名

https://git-scm.com/book/zh/v2/Git-与其他系统-迁移到-Git

  • 然而,在CentOS执行的时候报错如下:
Can't locate SVN/Core.pm in @INC (@INC contains: /root/share/perl5 /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /root/share/perl5/Git/SVN/Utils.pm line 6.
BEGIN failed--compilation aborted at /root/share/perl5/Git/SVN/Utils.pm line 6.
Compilation failed in require at /root/share/perl5/Git/SVN.pm line 32.
BEGIN failed--compilation aborted at /root/share/perl5/Git/SVN.pm line 32.
Compilation failed in require at /root/libexec/git-core/git-svn line 23.
BEGIN failed--compilation aborted at /root/libexec/git-core/git-svn line 23.
  • 后来找到一篇解决方案:

http://comdyn.hy.tsinghua.edu.cn/from-web/server/589-git-svn-错误-“can-t-locate-svn-core-pm-in-inc”-的解决方案

可惜,后面的步骤看不懂。想着,在如此旧版的系统上也是迁移,Windows上面也是迁移,干脆直接在Windows上面迁移。
然而,依旧报错:

git-svn migration fatal: not a valid SHA1
update-ref refs/heads/master refs/remotes/trunk: command returned error: 128

完善后的解决办法

各种翻查资料,尝试去学习svn的分支理念。
思来想去,发现应该是项目地址并不完整,或者是权限就到这个目录下面了,缺少了trunk文件夹(也就是svn中的主分支)。
由于权限问题的话,那就不管了。既然svn敢拿分支名创建文件夹,那我就直接将文件夹路径作为分支名,作为迁移仓库的主目录,执行目录如下:

# 注意:不要把doc1/doc2的斜杠搞错了!
git svn clone svn://172.0.0.1 --trunk=doc1/doc2 --authors-file=users.txt --no-metadata --prefix "" -s xxx_system

此处只是增加了--trunk=doc1/doc2的选项,指定某个目录下作为仓库根目录

参考:https://stackoverflow.com/questions/11694065/git-svn-migration-fatal-not-a-valid-sha1-update-ref-refs-heads-master-refs-remo

posted @ 2021-11-15 21:25  albertPaul  阅读(576)  评论(0编辑  收藏  举报