Comments
Patch
@@ -723,7 +723,7 @@
for candidate in movecandidates:
f1 = c1.filectx(candidate)
- if _related(f1, f2, anc.rev()):
+ if _related(f1, f2):
# if there are a few related copies then we'll merge
# changes into all of them. This matches the behaviour
# of upstream copytracing
@@ -737,7 +737,7 @@
except StopIteration:
raise
-def _related(f1, f2, limit):
+def _related(f1, f2):
"""return True if f1 and f2 filectx have a common ancestor
Walk back to common ancestor to see if the two files originate
@@ -764,10 +764,8 @@
f1, g1 = _loosenext(g1)
elif f2r > f1r:
f2, g2 = _loosenext(g2)
- elif f1 == f2:
- return f1 # a match
- elif f1r == f2r or f1r < limit or f2r < limit:
- return False # copy no longer relevant
+ else: # f1 and f2 point to files in the same linkrev
+ return f1 == f2 # true if they point to the same file
except StopIteration:
return False
@@ -835,7 +833,7 @@
c2 = getdstfctx(of, mdst[of])
# c2 might be a plain new file on added on destination side that is
# unrelated to the droids we are looking for.
- cr = _related(oc, c2, tca.rev())
+ cr = _related(oc, c2)
if cr and (of == f or of == c2.path()): # non-divergent
if backwards:
data['copy'][of] = f