# HG changeset patch # User Bryan O'Sullivan # Date 1360445076 0 # Node ID 0b6e6eacc939c303136cb38af108e307d640c26e # Parent 18c2184c27dcb9a310152d67e5d4aa7cea92c7ba merge: don't call copies.mergecopies unless we need to This reduces the amount of time we spend calculating when doing a clean non-merge update. In a large repo, the time dropped from 10.1 seconds to 3.4. diff -r 18c2184c27dc -r 0b6e6eacc939 mercurial/merge.py --- a/mercurial/merge.py Sat Feb 09 21:24:24 2013 +0000 +++ b/mercurial/merge.py Sat Feb 09 21:24:36 2013 +0000 @@ -200,6 +200,8 @@ pa = wctx elif pa == p2: # backwards pa = wctx.p1() + elif not branchmerge and not wctx.dirty(missing=True): + pass elif pa and repo.ui.configbool("merge", "followcopies", True): ret = copies.mergecopies(repo, wctx, p2, pa) copy, movewithdir, diverge, renamedelete = ret diff -r 18c2184c27dc -r 0b6e6eacc939 tests/test-subrepo.t --- a/tests/test-subrepo.t Sat Feb 09 21:24:24 2013 +0000 +++ b/tests/test-subrepo.t Sat Feb 09 21:24:36 2013 +0000 @@ -210,7 +210,6 @@ subrepo merge f0d2028bf86d+ 1831e14459c4 1f14a2e2d3ec subrepo t: other changed, get t:6747d179aa9a688023c4b0cad32e4c92bb7f34ad:hg getting subrepo t - searching for copies back to rev 1 resolving manifests branchmerge: False, force: False, partial: False ancestor: 60ca1237c194, local: 60ca1237c194+, remote: 6747d179aa9a