MacOS下SVN遷移Git踩坑記


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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM