如何升级git-svn使用的SVN版本

hol*_*mes 12 svn git macos git-svn

我一直在使用git-svn并喜欢它.但我们只是将我们的仓库转换为需要1.5.0或更高版本的svn版本.目前,我有这个:

triedsound-lm:android holmesj$ git svn --version
git-svn version 1.7.3.1 (svn 1.4.4)

triedsound-lm:android holmesj$ svn --version
svn, version 1.6.15 (r1038135)
   compiled Nov 29 2010, 13:32:56
Run Code Online (Sandbox Code Playgroud)

所以,当我尝试dcommit时,我收到此错误消息:

...
...
A repository hook failed: Commit blocked by start-commit hook (exit code 1) with output:
Only clients >= 1.5.0 may commit to this repository.
For upgrade instructions please see:
    http://twiki.corp.yahoo.com/view/Subversion/SubversionFAQ#Upgrade
 at /usr/local/git/libexec/git-core/git-svn line 573
Run Code Online (Sandbox Code Playgroud)

这真的很糟糕,我不想停止使用git-svn.那真是太糟糕了.如果我只是将我的所有git提交归结为一个大的svn提交,那就太糟糕了.

有谁知道如何更新git-svn使用的svn版本?我在OSX 10.5上运行它

sb.*_*sb. 10

git-svn是用perl编写的,并使用SVN :: Core模块,因此它使用模块指向的任何版本的svn库.为了让git-svn使用更新版本的svn,你可以更新系统的SVN :: Core模块......一个sudo cpan SVN::Core就足够了.或者,您可以替换/ usr/lib中的svn库.

我无法做到上述任何一种情况,因为我的工作机器上没有管理员权限.这就是我为克服这一点所做的努力.如果采用这种方式,您可能需要调整下面的一些路径.我用~/local/lib,~/local/bin

设置以下shell变量:

export PERL_MB_OPT="--install_base $HOME/local"
export PERL_MM_OPT="INSTALL_BASE=$HOME/local"
Run Code Online (Sandbox Code Playgroud)

然后跑cpan SVN::Core.在某些时候它会询问"你想传递任何参数来配置吗?",我回答了--libdir=/Users/sean/local/lib --prefix=/Users/sean/local.这将构建一个svn库的新副本,以及它的perl绑定,它将最终进入~/local/lib/perl5/.

现在,在我安装的git(来自源代码)中,git-svn执行此操作:

use lib (split(/:/, $ENV{GITPERLLIB} || "/Users/sean/local/lib/perl5/site_perl"));
Run Code Online (Sandbox Code Playgroud)

所以我将刚刚安装好的SVN模块~/local/lib/perl5/移到了~/local/lib/perl5/site_perl.搬迁有几件事情; 你的lib/perl5目录应该是这样的:

替代文字

($HOME/local/lib/perl5将GITPERLLIB 设置为并将Git.pm移出可能更容易site_perl)

我显然不是perl guru,所以可能有更好的方法来实现这一切.但是,我可以确认它有效:git-svn version 1.7.3.1 (svn 1.6.12)