# HG changeset patch # User Pierre-Yves David # Date 1499767087 -7200 # Node ID f7d44441dfd32ef884e08bba6b646c288493fa1d # Parent 70004f0847a2c2891eb580e44bd780f413fbf685 uncommit: add support for --message and --logfile This is long overdue. diff -r 70004f0847a2 -r f7d44441dfd3 hgext3rd/evolve/evocommands.py --- a/hgext3rd/evolve/evocommands.py Tue Jul 11 11:12:23 2017 +0200 +++ b/hgext3rd/evolve/evocommands.py Tue Jul 11 11:58:07 2017 +0200 @@ -116,7 +116,7 @@ touched.update(files) return touched -def _commitfiltered(repo, ctx, match, target=None): +def _commitfiltered(repo, ctx, match, target=None, message=None): """Recommit ctx with changed files not in match. Return the new node identifier, or None if nothing changed. """ @@ -156,9 +156,11 @@ copied=copied.get(path)) return mctx + if message is None: + message = ctx.description() new = context.memctx(repo, parents=[base.node(), node.nullid], - text=ctx.description(), + text=message, files=files, filectxfn=filectxfn, user=ctx.user(), @@ -216,7 +218,7 @@ '^uncommit', [('a', 'all', None, _('uncommit all changes when no arguments given')), ('r', 'rev', '', _('revert commit content to REV instead')), - ] + commands.walkopts, + ] + commands.walkopts + commitopts, _('[OPTION]... [NAME]')) def uncommit(ui, repo, *pats, **opts): """move changes from parent revision to working directory @@ -272,7 +274,11 @@ includeorexclude = opts.get('include') or opts.get('exclude') if (pats or includeorexclude or opts.get('all')): match = scmutil.match(old, pats, opts) - newid = _commitfiltered(repo, old, match, target=rev) + if not (opts['message'] or opts['logfile']): + opts['message'] = old.description() + message = cmdutil.logmessage(ui, opts) + newid = _commitfiltered(repo, old, match, target=rev, + message=message) if newid is None: raise error.Abort(_('nothing to uncommit'), hint=_("use --all to uncommit all files")) diff -r 70004f0847a2 -r f7d44441dfd3 tests/test-tutorial.t --- a/tests/test-tutorial.t Tue Jul 11 11:12:23 2017 +0200 +++ b/tests/test-tutorial.t Tue Jul 11 11:58:07 2017 +0200 @@ -461,6 +461,8 @@ -r --rev VALUE revert commit content to REV instead -I --include PATTERN [+] include names matching the given patterns -X --exclude PATTERN [+] exclude names matching the given patterns + -m --message TEXT use text as commit message + -l --logfile FILE read commit message from file (some details hidden, use --verbose to show complete help) diff -r 70004f0847a2 -r f7d44441dfd3 tests/test-uncommit.t --- a/tests/test-uncommit.t Tue Jul 11 11:12:23 2017 +0200 +++ b/tests/test-uncommit.t Tue Jul 11 11:58:07 2017 +0200 @@ -362,3 +362,25 @@ $ hg cat b --rev . b b + +Test message update + + $ hg log -r . + changeset: 12:912ed871207c + branch: bar + tag: tip + parent: 7:4f1c269eab68 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: touncommit + + $ hg uncommit -m 'to-uncommit' d + $ hg log -r . + changeset: 13:dfe358c8c130 + branch: bar + tag: tip + parent: 7:4f1c269eab68 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: to-uncommit +