diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -1646,6 +1646,9 @@ class memctx(committablectx): else: man[f] = revlog.hash(fctx.data(), p1node, p2node) + for f in self._status.added: + man[f] = revlog.hash(self[f].data(), nullid, nullid) + return man @propertycache diff --git a/tests/test-commit-amend.t b/tests/test-commit-amend.t --- a/tests/test-commit-amend.t +++ b/tests/test-commit-amend.t @@ -805,7 +805,7 @@ This shouldn't be possible: $ hg branch closewithamend marked working directory as branch closewithamend (branches are permanent and global, did you want a bookmark?) - $ touch foo + $ echo foo > foo $ hg add foo $ hg ci -m.. $ hg ci --amend --close-branch -m 'closing' @@ -857,6 +857,55 @@ Test that amend with --edit invokes edit $ hg parents --template "{desc}\n" editor should be invoked +Test that "diff()" in committemplate works correctly for amending +----------------------------------------------------------------- + + $ cat >> .hg/hgrc < [committemplate] + > changeset.commit.amend = {desc}\n + > HG: M: {file_mods} + > HG: A: {file_adds} + > HG: R: {file_dels} + > {splitlines(diff()) % 'HG: {line}\n'} + > EOF + + $ hg parents --template "M: {file_mods}\nA: {file_adds}\nR: {file_dels}\n" + M: + A: foo + R: + $ hg status -amr + $ HGEDITOR=cat hg commit --amend -e -m "expecting diff of foo" + expecting diff of foo + + HG: M: + HG: A: foo + HG: R: + HG: diff -r 6de0c1bde1c8 foo + HG: --- /dev/null Thu Jan 01 00:00:00 1970 +0000 + HG: +++ b/foo Thu Jan 01 00:00:00 1970 +0000 + HG: @@ -0,0 +1,1 @@ + HG: +foo + + $ echo y > y + $ hg add y + $ HGEDITOR=cat hg commit --amend -e -m "expecting diff of foo and y" + expecting diff of foo and y + + HG: M: + HG: A: foo y + HG: R: + HG: diff -r 6de0c1bde1c8 foo + HG: --- /dev/null Thu Jan 01 00:00:00 1970 +0000 + HG: +++ b/foo Thu Jan 01 00:00:00 1970 +0000 + HG: @@ -0,0 +1,1 @@ + HG: +foo + HG: diff -r 6de0c1bde1c8 y + HG: --- /dev/null Thu Jan 01 00:00:00 1970 +0000 + HG: +++ b/y Thu Jan 01 00:00:00 1970 +0000 + HG: @@ -0,0 +1,1 @@ + HG: +y + + Check for issue4405 -------------------