# HG changeset patch # User Christian Ebert # Date 1338461270 -7200 # Node ID 4ee1c08706c4a5222865837f82674a2679a9eeed # Parent 502c40551c8db96454d0bbfaf592b0df0f438cf7 Support commit --amend (issue3471) Include a test as well. diff -r 502c40551c8d -r 4ee1c08706c4 hgkw/keyword.py --- a/hgkw/keyword.py Thu May 31 12:47:49 2012 +0200 +++ b/hgkw/keyword.py Thu May 31 12:47:50 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 502c40551c8d -r 4ee1c08706c4 tests/test-keyword.t --- a/tests/test-keyword.t Thu May 31 12:47:49 2012 +0200 +++ b/tests/test-keyword.t Thu May 31 12:47:50 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