--- tracopt/versioncontrol/svn/svn_fs.py 2013-07-31 07:58:05.000000000 +0200 +++ tracopt/versioncontrol/svn/svn_fs.py 2013-07-31 08:03:08.000000000 +0200 @@ -68,10 +68,14 @@ def _import_svn(): - global fs, repos, core, delta, _kindmap + global fs, repos, core, delta, _kindmap, _svn_uri_canonicalize from svn import fs, repos, core, delta _kindmap = {core.svn_node_dir: Node.DIRECTORY, core.svn_node_file: Node.FILE} + try: + _svn_uri_canonicalize = core.svn_uri_canonicalize # Subversion 1.7+ + except AttributeError: + _svn_uri_canonicalize = lambda v: v # Protect svn.core methods from GC Pool.apr_pool_clear = staticmethod(core.apr_pool_clear) Pool.apr_pool_destroy = staticmethod(core.apr_pool_destroy) @@ -361,7 +365,7 @@ assert self.scope[0] == '/' # we keep root_path_utf8 for RA ra_prefix = 'file:///' if os.name == 'nt' else 'file://' - self.ra_url_utf8 = ra_prefix + root_path_utf8 + self.ra_url_utf8 = _svn_uri_canonicalize(ra_prefix + root_path_utf8) self.clear() def clear(self, youngest_rev=None): @@ -812,6 +816,9 @@ start = _svn_rev(0) file_url_utf8 = posixpath.join(self.repos.ra_url_utf8, self._scoped_path_utf8) + # svn_client_blame2() requires a canonical uri since + # Subversion 1.7 (#11167) + file_url_utf8 = _svn_uri_canonicalize(file_url_utf8) self.repos.log.info('opening ra_local session to %r', file_url_utf8) from svn import client