使用pysvn尝试SVN导出时如何解决此错误?

时间:2012-07-24 04:56:58

标签: python svn pysvn

我正在尝试使用Python SVN绑定(pysvn)在存储库上执行导出,并遇到以下错误:

python: subversion/libsvn_subr/dirent_uri.c:955: svn_dirent_join: Assertion `svn_dirent_is_canonical(base, pool)' failed.
Aborted (core dumped)

示例代码为:

import pysvn
client = pysvn.Client()
uri = 'https://svn.mycompany.com/myproject/trunk/'
# This works fine
print client.list(uri)
# This crashes with the above error
r = client.export(uri, './temp', force=True)

但是,从shell提示符执行svn export --force https://svn.mycompany.com/myproject/trunk/可以正常运行。

我正在使用:

  • Python 2.7.3
  • Subversion 1.7.5
  • CentOS 6.0 x64

请问任何想法?

2 个答案:

答案 0 :(得分:3)

Subversion API在内部使用规范的URL和路径。您的URL有尾部斜杠,这不是规范的URL。删除尾部斜杠或使用svn_uri_canonicalize()函数在调用Subversion API函数之前规范化URL。

您可以在Subversion API文档中找到更多详细信息: http://subversion.apache.org/docs/api/latest/svn_dirent_uri_8h.html

答案 1 :(得分:1)

我尝试使用svn+ssh://方案并遇到了同样的错误。这让我相信断言失败可能实际上与repo URI无关。一时兴起,我将导出目录更改为/tmp/,一切正常。我之前尝试使用的目录(./temp)存在于我的主目录中,该目录位于启用了“root squash”选项的NFS挂载上。众所周知,这会导致奇怪的应用问题。