# HG changeset patch # User Matt Mackall # Date 1155677239 18000 # Node ID f28f4c850cd84cc1b0ac9a8c45451b1081001e46 # Parent 3cef09d1201029ce9724e71adc117dd4342367c3 merge: hoist some working manifest logic out of merge loop diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -116,8 +116,12 @@ def update(repo, node, branchmerge=False umap = dict.fromkeys(unknown) for f in added + modified + unknown: - mw[f] = None - if f in m1: mw[f] = "" # distinguish between changed and new + mw[f] = "" + # is the wfile new and matches m2? + if (f not in m1 and f in m2 and + not repo.file(f).cmp(m2[f], repo.wread(f))): + mw[f] = m2[f] + mw.set(f, util.is_exec(repo.wjoin(f), mw.execf(f))) for f in deleted + removed: @@ -139,11 +143,6 @@ def update(repo, node, branchmerge=False if f in m2: s = 0 - # is the wfile new and matches m2? - if mw[f] == None: - if not repo.file(f).cmp(m2[f], repo.wread(f)): - n = m2[f] - # are files different? if n != m2[f]: a = ma.get(f, nullid)