# HG changeset patch # User Pierre-Yves David # Date 1499767158 -7200 # Node ID 3c371aa16cb933d0a6ccb4a6eeade0e790543ba5 # Parent f7d44441dfd32ef884e08bba6b646c288493fa1d uncommit: add support for --user and --date This is also long overdue diff -r f7d44441dfd3 -r 3c371aa16cb9 hgext3rd/evolve/evocommands.py --- a/hgext3rd/evolve/evocommands.py Tue Jul 11 11:58:07 2017 +0200 +++ b/hgext3rd/evolve/evocommands.py Tue Jul 11 11:59:18 2017 +0200 @@ -116,7 +116,8 @@ touched.update(files) return touched -def _commitfiltered(repo, ctx, match, target=None, message=None): +def _commitfiltered(repo, ctx, match, target=None, message=None, user=None, + date=None): """Recommit ctx with changed files not in match. Return the new node identifier, or None if nothing changed. """ @@ -158,13 +159,17 @@ if message is None: message = ctx.description() + if not user: + user = ctx.user() + if not date: + date = ctx.date() new = context.memctx(repo, parents=[base.node(), node.nullid], text=message, files=files, filectxfn=filectxfn, - user=ctx.user(), - date=ctx.date(), + user=user, + date=date, extra=ctx.extra()) # commitctx always create a new revision, no need to check newid = repo.commitctx(new) @@ -218,7 +223,7 @@ '^uncommit', [('a', 'all', None, _('uncommit all changes when no arguments given')), ('r', 'rev', '', _('revert commit content to REV instead')), - ] + commands.walkopts + commitopts, + ] + commands.walkopts + commitopts + commitopts2, _('[OPTION]... [NAME]')) def uncommit(ui, repo, *pats, **opts): """move changes from parent revision to working directory @@ -278,7 +283,8 @@ opts['message'] = old.description() message = cmdutil.logmessage(ui, opts) newid = _commitfiltered(repo, old, match, target=rev, - message=message) + message=message, user=opts.get('user'), + date=opts.get('date')) if newid is None: raise error.Abort(_('nothing to uncommit'), hint=_("use --all to uncommit all files")) diff -r f7d44441dfd3 -r 3c371aa16cb9 tests/test-tutorial.t --- a/tests/test-tutorial.t Tue Jul 11 11:58:07 2017 +0200 +++ b/tests/test-tutorial.t Tue Jul 11 11:59:18 2017 +0200 @@ -463,6 +463,8 @@ -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 + -d --date DATE record the specified date as commit date + -u --user USER record the specified user as committer (some details hidden, use --verbose to show complete help) diff -r f7d44441dfd3 -r 3c371aa16cb9 tests/test-uncommit.t --- a/tests/test-uncommit.t Tue Jul 11 11:58:07 2017 +0200 +++ b/tests/test-uncommit.t Tue Jul 11 11:59:18 2017 +0200 @@ -363,7 +363,7 @@ b b -Test message update +Test date, message and user update $ hg log -r . changeset: 12:912ed871207c @@ -374,13 +374,13 @@ date: Thu Jan 01 00:00:00 1970 +0000 summary: touncommit - $ hg uncommit -m 'to-uncommit' d + $ hg uncommit -m 'to-uncommit' d --user test2 --date '1337 0' $ hg log -r . - changeset: 13:dfe358c8c130 + changeset: 13:f1efd9ec508c branch: bar tag: tip parent: 7:4f1c269eab68 - user: test - date: Thu Jan 01 00:00:00 1970 +0000 + user: test2 + date: Thu Jan 01 00:22:17 1970 +0000 summary: to-uncommit