Index: trac/versioncontrol/svn_fs.py
===================================================================
--- trac/versioncontrol/svn_fs.py	(revision 5961)
+++ trac/versioncontrol/svn_fs.py	(working copy)
@@ -863,8 +863,7 @@
             if not (_is_path_within_scope(self.scope, path) and \
                     self.authz.has_permission(path)):
                 continue
-
-            path = change.path
+            new_path = change.path
             base_path = change.base_path
             base_rev = change.base_rev
 
@@ -874,12 +873,12 @@
                 base_path, base_rev = None, -1
 
             # Determine the action
-            if not path:                # deletion
+            if not new_path:            # deletion
                 if base_path:
-                    if base_path in deletions:
-                        continue # duplicates on base_path are possible (#3778)
+                    #if base_path in deletions:
+                    #    continue # duplicates on base_path are possible (#3778)
                     action = Changeset.DELETE
-                    deletions[base_path] = idx
+                    deletions[path] = idx # ''not'' base_path (see #4900)
                 elif self.scope == '/': # root property change
                     action = Changeset.EDIT
                 else:                   # deletion outside of scope, ignore
@@ -906,7 +905,7 @@
                     base_path, base_rev = cbase_path, cbase_rev
 
             kind = _kindmap[change.item_kind]
-            path = _path_within_scope(self.scope, _from_svn(path or base_path))
+            path = _path_within_scope(self.scope, _from_svn(path))
             base_path = _path_within_scope(self.scope, _from_svn(base_path))
             changes.append([path, kind, action, base_path, base_rev])
             idx += 1
