mercurial/merge.py
changeset 4118 bb70d5fa02ae
parent 4007 20da40cc1c73
parent 4117 c95060a5391a
child 4177 ba51a8225a60
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -184,7 +184,7 @@ def findcopies(repo, m1, m2, ma, limit):
             invalid[dsrc] = True
             del dirmove[dsrc]
         else:
-            dirmove[dsrc] = ddst
+            dirmove[dsrc + "/"] = ddst + "/"
 
     del d1, d2, invalid
 
@@ -194,9 +194,10 @@ def findcopies(repo, m1, m2, ma, limit):
     # check unaccounted nonoverlapping files
     for f in u1 + u2:
         if f not in fullcopy:
-            d = os.path.dirname(f)
-            if d in dirmove:
-                copy[f] = dirmove[d] + "/" + os.path.basename(f)
+            for d in dirmove:
+                if f.startswith(d):
+                    copy[f] = dirmove[d] + f[len(d):]
+                    break
 
     return copy