MacOS下SVN迁移Git踩坑记

简介: 1. First Blood之前在Windows环境下进行svn到git的迁移是很简单的,参考官方文档。可是在macOS环境下(macOS High Sierra 10.13.2),输入:$ git svn神奇的事情发生了,报了以下错误:can't locate SVN/Core.

1. First Blood

之前在Windows环境下进行svn到git的迁移是很简单的,参考官方文档
可是在macOS环境下(macOS High Sierra 10.13.2),输入:

$ git svn

神奇的事情发生了,报了以下错误:

can't locate SVN/Core.pm in @INC (you may need to install the SVN::Core module) (@INC contains: /usr/local/git/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level /usr/local/git/lib/perl5/site_perl/5.18.2 /usr/local/git/lib/perl5/site_perl /Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.2 /System/Library/Perl/5.18/darwin-thread-multi-2level /System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level /System/Library/Perl/Extras/5.18 .) at /usr/local/git/lib/perl5/site_perl/Git/SVN/Utils.pm line 6.
BEGIN failed--compilation aborted at /usr/local/git/lib/perl5/site_perl/Git/SVN/Utils.pm line 6.
Compilation failed in require at /usr/local/git/lib/perl5/site_perl/Git/SVN.pm line 25.
BEGIN failed--compilation aborted at /usr/local/git/lib/perl5/site_perl/Git/SVN.pm line 32.
Compilation failed in require at /usr/local/git/libexec/git-core/git-svn line 21.
BEGIN failed--compilation aborted at /usr/local/git/libexec/git-core/git-svn line 21.

看错误内容初步分析应该是svn安装问题,macOS是自带svn的,猜测svn损坏需要重新安装,Google之后找到重装方式:

  • 安装 Command Line Tools
$ xcode-select --install

选择安装 等5-6分钟就好了

  • 创建软链接
$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi-2level/SVN /System/Library/Perl/Extras/5.18/SVN
$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi-2level/auto/SVN/ /System/Library/Perl/Extras/5.18/auto/SVN

2. Double Kill

ln: /System/Library/Perl/Extras/5.18/SVN: Operation not permitted

再次Google之后,了解到,由于El Capitan 系统保护机制,上述操作无效了。But,虽然不能写入 /System, 但是可以写入 /Library。
修改路径:

$ sudo mkdir /Library/Perl/5.18/auto
$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi-2level/SVN /Library/Perl/5.18/darwin-thread-multi-2level
$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi-2level/auto/SVN /Library/Perl/5.18/auto/

3. Triple Kill

再次输入git svn验证,结果还是报错。重新分析,git的常规命令,像更新、提交等都可以正常使用,唯独git svn执行会报错,会不会是git中某个组件有问题,Google之后查到可以单独安装:

$ brew install git svn

结果再再次报错,提示xcode版本过低,要我升级Xcode。之前有段时间没做Xcode为了清理空间把Xcode删掉了,重新下载5.5G,瞬间蛋疼了。

Updating Homebrew...
Error: Your Xcode (8.3.2) is too outdated.
Please update to Xcode 9.2 (or delete it).
Xcode can be updated from the App Store.

一边下载过程中一边继续Google看有没有别的解决方法,终于在踏破铁鞋无觅处之后,找到了最终解决办法。

4. 终极方法

  • 打开用户协议,最后选择agree。
$ sudo xcodebuild -license
  • 安装 Command Line Tools
$ xcode-select --install 
  • 使用cpan安装 SVN::Core包

    cpan是下载、安装、更新及管理的Perl工具

$ sudo cpan SVN::Core 
  • 添加环境变量
#vim ~/.profile:
export PATH=/Library/Developer/CommandLineTools/usr/bin:$PATH
  • 重装git,svn
$ brew reinstall git
$ brew reinstall subversion

再次输入git svn验证,问题解决。


参考资料:
[1] Git-scm:
https://git-scm.com
[2]
https://paulschreiber.com/blog/2015/11/09/fixing-git-svn-on-os-x-el-capitan/

目录
相关文章
|
6月前
|
程序员 Linux 开发工具
Git基本概念、工作流程及与SVN的对比
Git基本概念、工作流程及与SVN的对比
120 0
|
6月前
|
存储 算法 开发工具
git是什么?git的五个命令,git和svn的区别
git是什么?git的五个命令,git和svn的区别
90 0
|
3月前
|
敏捷开发 存储 开发工具
版本控制系统的选择:Git与SVN的比较
【8月更文挑战第14天】Git和SVN都是优秀的版本控制系统,它们各自具有独特的优势和适用场景。在选择版本控制系统时,需要根据具体的项目需求、团队特点和开发模式来综合考量。对于需要分布式团队协作、高效处理大型项目或采用敏捷开发模式的团队来说,Git是一个更好的选择。而对于传统团队、集中式开发或简单项目来说,SVN可能更加合适。无论选择哪种版本控制系统,都应该充分利用其提供的工具和功能来提高代码质量和开发效率。
|
1月前
|
存储 开发工具 git
Git和SVN有什么区别?
综上所述,选择Git还是SVN取决于项目的具体需求、团队规模以及工作习惯。Git因其高级特性和灵活性,成为了现代软件开发中更受欢迎的选择,而SVN在某些特定场景下仍保有一席之地。开发者应当根据实际情况,权衡两者之间的优劣,作出最适合项目的选择。
51 4
|
3月前
|
存储 开发工具 数据安全/隐私保护
Git 与 SVN:版本控制领域的双星对比
【8月更文挑战第27天】
131 6
|
6月前
|
iOS开发 MacOS
MAC OS更新系统后IDEA中的SVN报错无法使用
MAC OS更新系统后IDEA中的SVN报错无法使用
|
3月前
|
Kubernetes jenkins 持续交付
Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 + Kubernetes(K8S)
Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 + Kubernetes(K8S)
134 0
|
5月前
|
开发工具 git
git项目迁移
git项目迁移
29 2
|
5月前
|
中间件 Java 生物认证
Web应用&源码泄漏&开源闭源&指纹识别&GIT&SVN&DS&备份
Web应用&源码泄漏&开源闭源&指纹识别&GIT&SVN&DS&备份
|
6月前
|
开发工具 git
将本地项目上传到svn服务端和git
将本地项目上传到svn服务端和git
158 0