prune: add --user and --date options
They control the metadata writen to the obsolescence marker.
--- a/README Mon Feb 11 09:21:11 2013 +0000
+++ b/README Mon Feb 11 09:21:22 2013 +0000
@@ -53,6 +53,7 @@
- evolve: add a --all option
- prune: various minor improvements
- prune: add option to prune a specific bookmark
+- prune: add -u and -d option to control metadata
3.0.0 -- 2013-02-02
--- a/hgext/evolve.py Mon Feb 11 09:21:11 2013 +0000
+++ b/hgext/evolve.py Mon Feb 11 09:21:22 2013 +0000
@@ -829,6 +829,13 @@
#############################
cmdtable = {}
command = cmdutil.command(cmdtable)
+metadataopts = [
+ ('d', 'date', '',
+ _('record the specified date in metadata'), _('DATE')),
+ ('u', 'user', '',
+ _('record the specified user in metadata'), _('USER')),
+]
+
@command('^evolve|stabilize|solve',
[('n', 'dry-run', False, 'do not perform actions, print what to be done'),
@@ -1272,15 +1279,26 @@
marks.write()
ui.write(_("bookmark '%s' deleted\n") % mark)
+
+
+def _getmetadata(**opts):
+ metadata = {}
+ date = opts.get('date')
+ user = opts.get('user')
+ if date and '0 0' != date:
+ metadata['date'] = '%i %i' % util.parsedate(date)
+ if user:
+ metadata['user'] = user
+ return metadata
+
+
@command('^prune|obsolete|kill',
[('n', 'new', [], _("successor changeset (DEPRECATED)")),
('s', 'succ', [], _("successor changeset")),
('r', 'rev', [], _("revisions to prune")),
('B', 'bookmark', '', _("remove revs only reachable from given"
- " bookmark"))],
+ " bookmark"))] + metadataopts,
_('[OPTION] [-r] REV...'))
- # -d --date
- # -u --user
# -U --noupdate option to prevent wc update and or bookmarks update ?
def cmdprune(ui, repo, *revs, **opts):
"""get rid of changesets by marking them obsolete
@@ -1299,6 +1317,7 @@
revs = set(scmutil.revrange(repo, list(revs) + opts.get('rev')))
succs = opts['new'] + opts['succ']
bookmark = opts.get('bookmark')
+ metadata = _getmetadata(**opts)
if bookmark:
marks,revs = _reachablefrombookmark(repo, revs, bookmark)
@@ -1332,7 +1351,8 @@
msg = "Can't use multiple successors for multiple precursors"
raise util.Abort(msg)
# create markers
- createmarkers(repo, [(p, sucs) for p in precs])
+ createmarkers(repo, [(p, sucs) for p in precs], metadata=metadata)
+
# informs that changeset have been pruned
ui.status(_('%i changesets pruned\n') % len(precs))
# update to an unkilled parent
@@ -1383,6 +1403,7 @@
# determine updates to subsume
old = scmutil.revsingle(repo, '.')
+ metadata = _getmetadata(**opts)
lock = repo.lock()
try:
--- a/tests/test-prune.t Mon Feb 11 09:21:11 2013 +0000
+++ b/tests/test-prune.t Mon Feb 11 09:21:22 2013 +0000
@@ -38,12 +38,12 @@
prune current and tip changeset
- $ hg prune .
+ $ hg prune --user blah --date '1979-12-15' .
1 changesets pruned
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
working directory now at 47d2a3944de8
$ hg debugobsolete
- 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '*', 'user': 'test'} (glob)
+ 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '314064000 0', 'user': 'blah'} (glob)
prune leaving unstability behind
@@ -51,7 +51,7 @@
1 changesets pruned
2 new unstable changesets
$ hg debugobsolete
- 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '*', 'user': 'test'} (glob)
+ 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '314064000 0', 'user': 'blah'} (glob)
7c3bad9141dcb46ff89abf5f61856facd56e476c 0 {'date': '*', 'user': 'test'} (glob)
pruning multiple changeset at once
@@ -61,7 +61,7 @@
0 files updated, 0 files merged, 3 files removed, 0 files unresolved
working directory now at 1f0dee641bb7
$ hg debugobsolete
- 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '*', 'user': 'test'} (glob)
+ 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '314064000 0', 'user': 'blah'} (glob)
7c3bad9141dcb46ff89abf5f61856facd56e476c 0 {'date': '*', 'user': 'test'} (glob)
4538525df7e2b9f09423636c61ef63a4cb872a2d 0 {'date': '*', 'user': 'test'} (glob)
47d2a3944de8b013de3be9578e8e344ea2e6c097 0 {'date': '*', 'user': 'test'} (glob)
@@ -73,7 +73,7 @@
(see "hg help phases" for details)
[255]
$ hg debugobsolete
- 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '*', 'user': 'test'} (glob)
+ 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '314064000 0', 'user': 'blah'} (glob)
7c3bad9141dcb46ff89abf5f61856facd56e476c 0 {'date': '*', 'user': 'test'} (glob)
4538525df7e2b9f09423636c61ef63a4cb872a2d 0 {'date': '*', 'user': 'test'} (glob)
47d2a3944de8b013de3be9578e8e344ea2e6c097 0 {'date': '*', 'user': 'test'} (glob)
@@ -118,7 +118,7 @@
$ hg prune 'desc("add ee")' -s 'desc("add nE")'
1 changesets pruned
$ hg debugobsolete
- 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '*', 'user': 'test'} (glob)
+ 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '314064000 0', 'user': 'blah'} (glob)
7c3bad9141dcb46ff89abf5f61856facd56e476c 0 {'date': '*', 'user': 'test'} (glob)
4538525df7e2b9f09423636c61ef63a4cb872a2d 0 {'date': '*', 'user': 'test'} (glob)
47d2a3944de8b013de3be9578e8e344ea2e6c097 0 {'date': '*', 'user': 'test'} (glob)
@@ -146,7 +146,7 @@
$ hg prune 'desc("add dd")' -s 'desc("add nD")' -s 'desc("add nC")'
1 changesets pruned
$ hg debugobsolete
- 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '*', 'user': 'test'} (glob)
+ 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '314064000 0', 'user': 'blah'} (glob)
7c3bad9141dcb46ff89abf5f61856facd56e476c 0 {'date': '*', 'user': 'test'} (glob)
4538525df7e2b9f09423636c61ef63a4cb872a2d 0 {'date': '*', 'user': 'test'} (glob)
47d2a3944de8b013de3be9578e8e344ea2e6c097 0 {'date': '*', 'user': 'test'} (glob)
@@ -174,7 +174,7 @@
abort: Can't use multiple successors for multiple precursors
[255]
$ hg debugobsolete
- 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '*', 'user': 'test'} (glob)
+ 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '314064000 0', 'user': 'blah'} (glob)
7c3bad9141dcb46ff89abf5f61856facd56e476c 0 {'date': '*', 'user': 'test'} (glob)
4538525df7e2b9f09423636c61ef63a4cb872a2d 0 {'date': '*', 'user': 'test'} (glob)
47d2a3944de8b013de3be9578e8e344ea2e6c097 0 {'date': '*', 'user': 'test'} (glob)
@@ -186,7 +186,7 @@
$ hg prune 'desc("add cc")' 'desc("add bb")' -s 'desc("add nB")'
2 changesets pruned
$ hg debugobsolete
- 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '*', 'user': 'test'} (glob)
+ 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '314064000 0', 'user': 'blah'} (glob)
7c3bad9141dcb46ff89abf5f61856facd56e476c 0 {'date': '*', 'user': 'test'} (glob)
4538525df7e2b9f09423636c61ef63a4cb872a2d 0 {'date': '*', 'user': 'test'} (glob)
47d2a3944de8b013de3be9578e8e344ea2e6c097 0 {'date': '*', 'user': 'test'} (glob)