# HG changeset patch # User Christian Ebert # Date 1338057972 -7200 # Node ID 846607ff274fa6e9043d882be933fc143ddd72cd # Parent 6b704fa2bea1519873a49c2145321cdb3eb540c0 keyword: support commit --amend (issue3471) Include a test as well. diff -r 6b704fa2bea1 -r 846607ff274f hgext/keyword.py --- a/hgext/keyword.py Fri May 25 19:32:29 2012 +0200 +++ b/hgext/keyword.py Sat May 26 20:46:12 2012 +0200 @@ -625,6 +625,21 @@ kwt.match = util.never return orig(web, req, tmpl) + def kw_amend(orig, ui, repo, commitfunc, old, extra, pats, opts): + '''Wraps cmdutil.amend expanding keywords after amend.''' + wlock = repo.wlock() + try: + kwt.postcommit = True + newid = orig(ui, repo, commitfunc, old, extra, pats, opts) + if newid != old.node(): + ctx = repo[newid] + kwt.restrict = True + kwt.overwrite(ctx, ctx.files(), False, True) + kwt.restrict = False + return newid + finally: + wlock.release() + def kw_copy(orig, ui, repo, pats, opts, rename=False): '''Wraps cmdutil.copy so that copy/rename destinations do not contain expanded keywords. @@ -690,6 +705,7 @@ extensions.wrapfunction(context.filectx, 'cmp', kwfilectx_cmp) extensions.wrapfunction(patch.patchfile, '__init__', kwpatchfile_init) extensions.wrapfunction(patch, 'diff', kw_diff) + extensions.wrapfunction(cmdutil, 'amend', kw_amend) extensions.wrapfunction(cmdutil, 'copy', kw_copy) for c in 'annotate changeset rev filediff diff'.split(): extensions.wrapfunction(webcommands, c, kwweb_skip) diff -r 6b704fa2bea1 -r 846607ff274f tests/test-keyword.t --- a/tests/test-keyword.t Fri May 25 19:32:29 2012 +0200 +++ b/tests/test-keyword.t Sat May 26 20:46:12 2012 +0200 @@ -495,6 +495,22 @@ $ hg forget i $ rm i +amend + + $ echo amend >> a + $ echo amend >> b + $ hg -q commit -d '1 14' -m 'prepare amend' + + $ hg --debug commit --amend -d '1 15' -m 'amend without changes' | grep keywords + invalidating branch cache (tip differs) + overwriting a expanding keywords + $ hg -q id + a71343332ea9 + $ head -1 a + expand $Id: a,v a71343332ea9 1970/01/01 00:00:01 test $ + + $ hg -q strip -n tip + Test patch queue repo $ hg init --mq