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/
