我正在尝试使用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/
可以正常运行。
我正在使用:
请问任何想法?
答案 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挂载上。众所周知,这会导致奇怪的应用问题。