Commit e733c59f3c0 by Martin von Zweigbergk

rebase: fix bug where `--collapse` would apply diff on missing file

Even though the file was missing, the rebase would succeed.

Differential Revision: https://phab.mercurial-scm.org/D7897
parent 521b4e3a42d
......@@ -1486,15 +1486,16 @@ def rebasenode(repo, rev, p1, base, collapse, dest, wctx):
repo.ui.debug(b" merge against %d:%s\n" % (rev, ctx))
if base is not None:
repo.ui.debug(b" detach base %d:%s\n" % (base, repo[base]))
# When collapsing in-place, the parent is the common ancestor, we
# have to allow merging with it.
# See explanation in merge.graft()
mergeancestor = repo.changelog.isancestor(p1ctx.node(), ctx.node())
stats = mergemod.update(
repo,
rev,
branchmerge=True,
force=True,
ancestor=base,
mergeancestor=collapse,
mergeancestor=mergeancestor,
labels=[b'dest', b'source'],
wc=wctx,
)
......
......@@ -288,6 +288,18 @@ Preserves external parent
$ hg rebase -s F --dest I --collapse # root (F) is not a merge
rebasing 6:c82b08f646f1 "F" (F)
file 'E' was deleted in local [dest] but was modified in other [source].
You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
What do you want to do? u
unresolved conflicts (see hg resolve, then hg rebase --continue)
[1]
$ echo F > E
$ hg resolve -m
(no more unresolved files)
continue: hg rebase --continue
$ hg rebase -c
rebasing 6:c82b08f646f1 "F" (F)
rebasing 7:a6db7fa104e1 "G" (G)
rebasing 8:e1d201b72d91 "H" (H tip)
saved backup bundle to $TESTTMP/external-parent/.hg/strip-backup/c82b08f646f1-f2721fbf-rebase.hg
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment