# HG changeset patch # User Matt Mackall # Date 1176744292 18000 # Node ID 8aee687f021472e3e93ef307e8ca09446a9ce316 # Parent b633f470944e94c10348aeed07ea898b26032698 merge: fix quadratic behavior in find-copies diff -r b633f470944e -r 8aee687f0214 mercurial/merge.py --- 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: