我在运行10.7.4的mac上安装了git
和svn
与自制程序。 svn
中我的计算机上有/usr/bin
版本,似乎是git svn
正在使用的版本。
$ git --version
git version 1.7.10.4
$ svn --version
svn, version 1.7.5 (r1336830)
$ git svn --version
git-svn version 1.7.10.4 (svn 1.6.17)
$ /usr/bin/svn --version
svn, version 1.6.17 (r1128011)
那么,我可以更改git-svn使用的svn版本吗?如果是这样,我该怎么做呢?
感谢阅读。
- 更新了评论 -
$ which git svn
/usr/local/bin/git
/usr/local/bin/svn
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/local/git/bin
答案 0 :(得分:7)
我做了一点挖掘,看起来git-svn使用了subversion的perl绑定。经过一些实验,我发现安装升级版本的svn 启用了perl 修复了问题。在Mac OSX上,这将是这样的:
# First, I had to take ownership of the perl libs dir,
# so homebrew could create perl modules
chown $USER -R /Library/Perl/5.12/darwin-thread-multi-2level
# Then, remove and reinstall Subversion, but add the perl option:
brew remove svn
brew install --perl svn
# Lastly, reinstall git (this may be optional, but it may also help.)
brew remove git
brew install git
您的问题归结为一个简单的事实,即您更新的Subversion安装不包含随附的perl模块,因此git-svn正在回退更完整的系统安装。
对于记录,symlinking / usr / bin / svn到/ usr / local / bin / svn绝对没有用。这与$PATH
或其他任何事情无关,而与perl模块有关。
答案 1 :(得分:1)
您的系统安装了两个版本的Subversion:/usr/bin/svn
中的1.6.17和/usr/local/bin/svn
中的1.7.5。当您运行svn
时,它会正确解析您的$PATH
以获取/usr/local/bin/svn
中的git-svn
,但/usr/bin
不会打扰,只使用{{1}中的版本}}
快速浏览一下代码,git-svn.pl
或Alien-SVN(git-svn
使用的Perl Subversion库)明确指向任何特定的svn
二进制文件,所以我怀疑这是一个安全“功能”,以避免查看您的自定义$PATH
。
如果您有权访问,则简单选项是将/usr/bin/svn
替换为/usr/local/bin/svn
;可能通过删除和替换符号链接。否则,我怀疑您需要深入了解git-svn.pl
的来源并重写它以接受您的自定义$PATH
。
答案 2 :(得分:0)
对于那些遇到同样问题的人: 现在GIT可以选择使用Homebrew版本的SVN:
brew install --with-brewed-svn git
希望这有帮助(我在找到它之前挖了很长时间!)