Index: tracopt/versioncontrol/svn/svn_fs.py
===================================================================
--- tracopt/versioncontrol/svn/svn_fs.py	(revision 11307)
+++ tracopt/versioncontrol/svn/svn_fs.py	(working copy)
@@ -641,10 +641,14 @@
         (wraps ``repos.svn_repos_dir_delta``)
         """
         def key(value):
-            return value[1].path if value[1] is not None else value[0].path
-        return iter(sorted(self._get_changes(old_path, old_rev, new_path,
-                                             new_rev, ignore_ancestry),
-                           key=key))
+            return value[1][0] if value[1] is not None else value[0][0]
+        for (old_node, new_node, kind, change) in \
+                sorted(self._get_changes(old_path, old_rev, new_path,
+                                         new_rev, ignore_ancestry), 
+                       key=key):
+            yield (self.get_node(*old_node) if old_node else old_node,
+                   self.get_node(*new_node) if new_node else new_node,
+                   kind, change)
         
     def _get_changes(self, old_path, old_rev, new_path, new_rev,
                      ignore_ancestry):
@@ -692,17 +696,16 @@
                 path = _from_svn(path)
                 old_node = new_node = None
                 if change != Changeset.ADD:
-                    old_node = self.get_node(posixpath.join(old_path, path),
-                                             old_rev)
+                    full_old_path = posixpath.join(old_path, path)
+                    old_node = (old_path, old_rev)
                 if change != Changeset.DELETE:
-                    new_node = self.get_node(posixpath.join(new_path, path),
-                                             new_rev)
+                    new_node = (posixpath.join(new_path, path), new_rev)
                 else:
-                    kind = _kindmap[fs.check_path(old_root,
-                                                  _to_svn(subpool(),
-                                                          self.scope,
-                                                          old_node.path),
-                                                  subpool())]
+                    kind = _kindmap[
+                        fs.check_path(old_root, 
+                                      _to_svn(subpool(), self.scope,
+                                              full_old_path),
+                                      subpool())]
                 yield  (old_node, new_node, kind, change)
         else:
             old_root = fs.revision_root(self.fs_ptr, old_rev, subpool())
