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

时间:2010-12-02 23:39:25

标签: 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

因此,当我尝试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

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

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

5 个答案:

答案 0 :(得分: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"

然后运行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"));

所以我将新安装的SVN模块从~/local/lib/perl5/移到了~/local/lib/perl5/site_perl。搬迁有几件事情;您的lib/perl5目录应如下所示:

alt text

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

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

答案 1 :(得分:2)

如果你可以使用MacPorts,一个简单的port install git-core +svn将安装git本身和svn客户端和库的最新版本。

$ git svn --version
git-svn version 1.7.3.2 (svn 1.6.15)

答案 2 :(得分:0)

注意:启动git 1。7。8(2012年10月下旬),git svn将适用于SVN1.7。

请参阅“[ANNOUNCE] Git v1.8.0-rc3”:

  

git svn”已更新,可与SVN 1.7配合使用。

答案 3 :(得分:0)

更改git-svn使用的svn版本的一种方法是将PERL5LIB环境变量指向您在系统上选择的svn安装的相应svn-perl。这可以通过在bash配置文件中添加以下行来完成:

export PERL5LIB=/usr/local/lib/svn-perl

路径将根据svn-perl绑定的安装目录而有所不同。例如,WanDisco svn客户端默认安装svn-perl绑定,通常在/opt/subversion/lib/svn-perl下。使用homebrew,您可以运行以下命令来安装带有perl绑定的svn:

$ brew install subversion --perl

对于旧版本:

$ brew install subversion17 --perl
$ brew install subversion16 --perl

我从here了解了PERL5LIB变量。

答案 4 :(得分:0)

For me, the following sequence of steps worked:

  1. Get Apache subversion source
  2. Build subversion from source using make, and then do:
    • make swig-pl
  3. Install subversion using make install, and then do:
    • make install-swig-pl
  4. Get git source
  5. Build git as usual

Reference: http://www.linuxfromscratch.org/blfs/view/cvs/general/subversion.html