How do I solve this error while attempting an SVN export using pysvn?

I am attempting to use the Python SVN bindings (pysvn) to do an export on a repository and am encountering the following error:

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

The example code is:

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)

However, doing a svn export --force https://svn.mycompany.com/myproject/trunk/ from a shell prompt works without issue.

I'm using:

  • Python 2.7.3
  • Subversion 1.7.5
  • CentOS 6.0 x64

Any ideas, please?

Answers


Subversion API uses canonical URL and paths internally. You URL have trailing slash and this is not canonical URL. Remove trailing slash or use svn_uri_canonicalize() function to canonicalize URL before calling Subversion API functions.

You can find more details in Subversion API documentation: http://subversion.apache.org/docs/api/latest/svn_dirent_uri_8h.html


I tried using the svn+ssh:// scheme and got the same error. This lead me to believe that the assertion failure might not actually be related to the repo URI. On a whim, I changed the export directory to /tmp/ and everything worked fine. The directory I was trying to use previously (./temp) exists in my home directory which is on an NFS mount with the "root squash" option enabled. This has been known to cause odd application issues before.


Need Your Help

Android 3.2 and WifiManager.setWifiEnabled

java android wifi android-wifi

I updated to Android 3.2 and now when I call WifiManager.setWifiEnabled I get an error in the log saying WRITE_SECURE_SETTINGS permission needed.

PromiseKit 3.0: chaining with loops

swift2 promisekit

I'm using promisekit 3.0 to help chain alamofire callbacks in a clean way. The objective is to start with a network call, with a promise to return an array of urls.