diff --git a/mercurial/context.py b/mercurial/context.py index 67904771a8..51aac8acb5 100644 --- a/mercurial/context.py +++ b/mercurial/context.py @@ -844,7 +844,7 @@ class workingctx(changectx): if self._repo.dirstate[f] != 'r': self._repo.ui.warn(_("%s not removed!\n") % f) else: - fctx = f in pctxs[0] and pctxs[0] or pctxs[1] + fctx = f in pctxs[0] and pctxs[0][f] or pctxs[1][f] t = fctx.data() self._repo.wwrite(f, t, fctx.flags()) self._repo.dirstate.normal(f) diff --git a/tests/test-mq-qrename.t b/tests/test-mq-qrename.t index d0e2054979..84532d25c0 100644 --- a/tests/test-mq-qrename.t +++ b/tests/test-mq-qrename.t @@ -59,4 +59,25 @@ Test patch being renamed before committed: $ cd .. +Test overlapping renames (issue2388) + $ hg init c + $ cd c + $ hg qinit -c + $ echo a > a + $ hg add + adding a + $ hg qnew patcha + $ echo b > b + $ hg add + adding b + $ hg qnew patchb + $ hg ci --mq -m c1 + $ hg qrename patchb patchc + $ hg qrename patcha patchb + $ hg st --mq + M patchb + M series + A patchc + R patcha + $ cd ..