changeset 4350:8aee687f0214

merge: fix quadratic behavior in find-copies
author Matt Mackall <mpm@selenic.com>
date Mon, 16 Apr 2007 12:24:52 -0500
parents b633f470944e
children c3c53eb44611
files mercurial/merge.py
diffstat 1 files changed, 5 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/merge.py	Mon Apr 16 09:51:50 2007 -0500
+++ b/mercurial/merge.py	Mon Apr 16 12:24:52 2007 -0500
@@ -105,10 +105,15 @@
     def findold(fctx):
         "find files that path was copied from, back to linkrev limit"
         old = {}
+        seen = {}
         orig = fctx.path()
         visit = [fctx]
         while visit:
             fc = visit.pop()
+            s = str(fc)
+            if s in seen:
+                continue
+            seen[s] = 1
             if fc.path() != orig and fc.path() not in old:
                 old[fc.path()] = 1
             if fc.rev() < limit: