mirror of
https://github.com/facebook/sapling.git
synced 2024-10-08 07:49:11 +03:00
Merge: save away mode bit so that we don't need manifest later
This commit is contained in:
parent
7c0506a4f5
commit
f048c758d8
@ -157,19 +157,19 @@ def update(repo, node, branchmerge=False, force=False, partial=None,
|
||||
# "if we changed or they changed, change in merge"
|
||||
a, b, c = mfa.execf(f), mfw.execf(f), mf2.execf(f)
|
||||
mode = ((a^b) | (a^c)) ^ a
|
||||
merge[f] = (m1.get(f, nullid), m2[f], mode)
|
||||
merge[f] = (mode, m1.get(f, nullid), m2[f])
|
||||
s = 1
|
||||
# are we clobbering?
|
||||
# is remote's version newer?
|
||||
# or are we going back in time?
|
||||
elif overwrite or m2[f] != a or (p2 == pa and mw[f] == m1[f]):
|
||||
repo.ui.debug(_(" remote %s is newer, get\n") % f)
|
||||
get[f] = m2[f]
|
||||
get[f] = (m2.execf(f), m2[f])
|
||||
s = 1
|
||||
elif f in umap or f in added:
|
||||
# this unknown file is the same as the checkout
|
||||
# we need to reset the dirstate if the file was added
|
||||
get[f] = m2[f]
|
||||
get[f] = (m2.execf(f), m2[f])
|
||||
|
||||
if not s and mfw.execf(f) != mf2.execf(f):
|
||||
if overwrite:
|
||||
@ -221,14 +221,14 @@ def update(repo, node, branchmerge=False, force=False, partial=None,
|
||||
(_("remote changed %s which local deleted\n") % f) +
|
||||
_("(k)eep or (d)elete?"), _("[kd]"), _("k"))
|
||||
if r == _("k"):
|
||||
get[f] = n
|
||||
get[f] = (m2.execf(f), n)
|
||||
elif f not in ma:
|
||||
repo.ui.debug(_("remote created %s\n") % f)
|
||||
get[f] = n
|
||||
get[f] = (m2.execf(f), n)
|
||||
else:
|
||||
if overwrite or p2 == pa: # going backwards?
|
||||
repo.ui.debug(_("local deleted %s, recreating\n") % f)
|
||||
get[f] = n
|
||||
get[f] = (m2.execf(f), n)
|
||||
else:
|
||||
repo.ui.debug(_("local deleted %s\n") % f)
|
||||
|
||||
@ -236,7 +236,7 @@ def update(repo, node, branchmerge=False, force=False, partial=None,
|
||||
|
||||
if overwrite:
|
||||
for f in merge:
|
||||
get[f] = merge[f][1]
|
||||
get[f] = merge[f][:2]
|
||||
merge = {}
|
||||
|
||||
if linear_path or overwrite:
|
||||
@ -254,12 +254,13 @@ def update(repo, node, branchmerge=False, force=False, partial=None,
|
||||
files = get.keys()
|
||||
files.sort()
|
||||
for f in files:
|
||||
flag, node = get[f]
|
||||
if f[0] == "/":
|
||||
continue
|
||||
repo.ui.note(_("getting %s\n") % f)
|
||||
t = repo.file(f).read(get[f])
|
||||
t = repo.file(f).read(node)
|
||||
repo.wwrite(f, t)
|
||||
util.set_exec(repo.wjoin(f), mf2.execf(f))
|
||||
util.set_exec(repo.wjoin(f), flag)
|
||||
if not partial:
|
||||
if branchmerge:
|
||||
repo.dirstate.update([f], 'n', st_mtime=-1)
|
||||
@ -272,7 +273,7 @@ def update(repo, node, branchmerge=False, force=False, partial=None,
|
||||
files.sort()
|
||||
for f in files:
|
||||
repo.ui.status(_("merging %s\n") % f)
|
||||
my, other, flag = merge[f]
|
||||
flag, my, other = merge[f]
|
||||
ret = merge3(repo, f, my, other, xp1, xp2)
|
||||
if ret:
|
||||
unresolved.append(f)
|
||||
|
Loading…
Reference in New Issue
Block a user