4

我正在尝试使用 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)

但是,svn export --force https://svn.mycompany.com/myproject/trunk/从 shell 提示符执行操作没有问题。

我在用着:

  • Python 2.7.3
  • 颠覆 1.7.5
  • CentOS 6.0 x64

请问有什么想法吗?

4

2 回答 2

3

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

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

于 2012-07-24T19:16:52.663 回答
1

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

于 2012-07-24T05:26:27.520 回答