" git svn"命令失败,"值不是/usr/share/perl5/vendor_perl/Git/SVN/Ra.pm第96行和第34行的字符串(或undef);

时间:2015-10-15 17:23:12

标签: git perl svn git-svn

我有一个来自上游SVN存储库的git svn clone创建的git存储库。存储库是在不久前(1年或2年)创建和配置的。拉(git svn fetch / git svn rebase)和推(git svn dcommit)之前工作正常。我停止使用存储库几个月,现在使用以下任何命令失败:

Value is not a string (or undef) at /usr/share/perl5/vendor_perl/Git/SVN/Ra.pm line 96

所以我无法使用git-svn。我怎样才能让它再次运作?

我正在运行Arch Linux,所以很可能有Subversion或Git的更新,不知何故破坏了我的设置。但是,在搜索错误消息时,我没有找到任何相关内容。 有问题的perl行在我当前的git版本中看起来像这样(因为第96行可能在其他版本中有所不同):

SVN::_Core::svn_auth_set_parameter($baton,
    $SVN::_Core::SVN_AUTH_PARAM_DONT_STORE_PASSWORDS,
    bless (\$dont_store_passwords, "_p_void"));

我目前正在使用subversion 1.9.2和git 2.6.1

编辑:在https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=797705

中跟踪了同样的问题

2 个答案:

答案 0 :(得分:1)

Git 2.7.1应该很快(2016年2月)解决这个问题。

commit 0b66415Eric Wong (ele828)(2016年1月16日) (由Junio C Hamano -- gitster --合并于commit 6d579a0,2016年2月1日)

git-svn:在SVN 1.9.0 +

上修复auth参数处理
  

对于使用" store-passwords = no"设置在" [auth]"尝试呼叫~/.subversion/config时,他们svn_auth_set_parameter,SVN 1.9.0+的部分会失败并显示以下消息:

Value is not a string (or undef) at Git/SVN/Ra.pm
  

具有讽刺意味的是,这次破坏是由颠覆中的r1553823引起的:

     

"使svn_auth_set_parameter()可用于Perl绑定。"

     

自2007年以来(602015e),git-svn使用了一种解决方法,使svn_auth_set_parameter在内部可用。
  但是,这种解决方法在SVN 1.9+下中断,它正确处理类型映射并且无法识别我们的解决方法。

     

对于1.9.0之前的SVN,我们继续使用现有的解决方法,因为绑定中缺少正确的类型映射。

     

在subversion 1.6.17和1.9.3下测试。

     

我还验证了r1553823没有向后移植到SVN 1.8.x:

BRANCH=http://svn.apache.org/repos/asf/subversion/branches/1.8.x
svn log -v $BRANCH/subversion/bindings/swig/core.i

参考:https://bugs.debian.org/797705

答案 1 :(得分:0)

我仍然不确定需要更改哪个软件(如果有的话),但是使用perl代码我可以查明我的配置问题。

防止subversion存储~/.subversion/config中的密码:

[auth]
store-passwords = no

评论该行(# store-passwords = no)使git svn再次发挥作用。 从subversion 1.6开始,在文件config中指定此设置为deprecated(但已成功)。 然而,颠覆1.9.x(可能从1.9开始)似乎完全删除了这个选项(我无法找到1.9文档,http://svnbook.red-bean.com仍然具有1.8作为"夜间")。这并没有打破颠覆,但它确实打破了git svn

从Subversion 1.6开始,此选项可以在~/.subversion/servers中给出:

[global]
store-passwords = no

这可能是由git-svn触发的subversion perl文件中的错误。但是,我在perl上做得不够流利,无法对此做出错误报告。另外,我的配置是错误的(对于颠覆1.9),如果它没有以某种方式中断,我也不会发现它。可能会好好打破一个更好的"虽然如此。

编辑: 现在有一个git-svn的补丁可用于 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=797705;msg=15