# HG changeset patch # User Matt Mackall # Date 1158543482 18000 # Node ID 5644a05a608cdb3ace68d469b77fe1e9eb9831a7 # Parent 7a635ef251328c78ed9234b3d83b8721465bff80 merge: simplify exec flag handling diff -r 7a635ef25132 -r 5644a05a608c mercurial/merge.py --- a/mercurial/merge.py Sun Sep 17 20:18:27 2006 -0500 +++ b/mercurial/merge.py Sun Sep 17 20:38:02 2006 -0500 @@ -10,11 +10,6 @@ from demandload import * demandload(globals(), "errno util os tempfile") -def fmerge(f, local, other, ancestor): - """merge executable flags""" - a, b, c = ancestor.execf(f), local.execf(f), other.execf(f) - return ((a^b) | (a^c)) ^ a - def merge3(repo, fn, my, other, p1, p2): """perform a 3-way merge in the working directory""" @@ -104,6 +99,11 @@ Merge manifest m1 with m2 using ancestor ma and generate merge action list """ + def fmerge(f): + """merge executable flags""" + a, b, c = ma.execf(f), m1.execf(f), m2.execf(f) + return ((a^b) | (a^c)) ^ a + action = [] # Filter manifests @@ -122,7 +122,7 @@ # are both different from the ancestor? if not overwrite and n != a and m2[f] != a: ui.debug(_(" %s versions differ, resolve\n") % f) - action.append((f, "m", fmerge(f, m1, m2, ma), n[:20], m2[f])) + action.append((f, "m", fmerge(f), n[:20], m2[f])) # are we clobbering? # is remote's version newer? # or are we going back in time and clean? @@ -130,22 +130,15 @@ ui.debug(_(" remote %s is newer, get\n") % f) action.append((f, "g", m2.execf(f), m2[f])) # local is newer, not overwrite, check mode bits - elif m1.execf(f) != m2.execf(f): - mode = fmerge(f, m1, m2, ma) - if mode != m1.execf(f): - ui.debug(_(" updating permissions for %s\n") % f) - action.append((f, "e", m2.execf(f))) + elif fmerge(f) != m1.execf(f): + ui.debug(_(" updating permissions for %s\n") % f) + action.append((f, "e", m2.execf(f))) # contents same, check mode bits elif m1.execf(f) != m2.execf(f): - if overwrite: + if overwrite or fmerge(f) != m1.execf(f) ui.debug(_(" updating permissions for %s\n") % f) action.append((f, "e", m2.execf(f))) - else: - mode = fmerge(f, m1, m2, ma) - if mode != m1.execf(f): - ui.debug(_(" updating permissions for %s\n") % f) - action.append((f, "e", m2.execf(f))) del m2[f] elif f in ma: if n != ma[f] and not overwrite: