diff --git a/tracopt/versioncontrol/svn/svn_fs.py b/tracopt/versioncontrol/svn/svn_fs.py
index 2773386..777573e 100644
--- a/tracopt/versioncontrol/svn/svn_fs.py
+++ b/tracopt/versioncontrol/svn/svn_fs.py
@@ -361,6 +361,7 @@ class SubversionRepository(Repository):
                               "%(svn_error)s", path=to_unicode(path_utf8),
                               svn_error=exception_to_unicode(e)))
         self.fs_ptr = repos.svn_repos_fs(self.repos)
+        fs.set_warning_func(self.fs_ptr, self._log_fs_warning, None)
 
         self.uuid = fs.get_uuid(self.fs_ptr, self.pool())
         self.base = 'svn:%s:%s' % (self.uuid, _from_svn(root_path_utf8))
@@ -392,6 +393,12 @@ class SubversionRepository(Repository):
     def __del__(self):
         self.close()
 
+    def _log_fs_warning(self, baton, err):
+        if err is not None:
+            message = _from_svn(err.message)
+            self.log.warn("svn: E%06d: In file %r line %d: %s",
+                          err.apr_err, err.file, err.line, message)
+
     def has_node(self, path, rev=None, pool=None):
         """Check if `path` exists at `rev` (or latest if unspecified)"""
         if not pool:
