keyword: support commit --amend (issue3471)
Include a test as well.
--- 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)
--- 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