827 |
827 |
828 ### new command |
828 ### new command |
829 ############################# |
829 ############################# |
830 cmdtable = {} |
830 cmdtable = {} |
831 command = cmdutil.command(cmdtable) |
831 command = cmdutil.command(cmdtable) |
|
832 metadataopts = [ |
|
833 ('d', 'date', '', |
|
834 _('record the specified date in metadata'), _('DATE')), |
|
835 ('u', 'user', '', |
|
836 _('record the specified user in metadata'), _('USER')), |
|
837 ] |
|
838 |
832 |
839 |
833 @command('^evolve|stabilize|solve', |
840 @command('^evolve|stabilize|solve', |
834 [('n', 'dry-run', False, 'do not perform actions, print what to be done'), |
841 [('n', 'dry-run', False, 'do not perform actions, print what to be done'), |
835 ('A', 'any', False, 'evolve any troubled changeset'), |
842 ('A', 'any', False, 'evolve any troubled changeset'), |
836 ('a', 'all', False, 'evolve all troubled changesets'), |
843 ('a', 'all', False, 'evolve all troubled changesets'), |
1270 def _deletebookmark(ui, marks, mark): |
1277 def _deletebookmark(ui, marks, mark): |
1271 del marks[mark] |
1278 del marks[mark] |
1272 marks.write() |
1279 marks.write() |
1273 ui.write(_("bookmark '%s' deleted\n") % mark) |
1280 ui.write(_("bookmark '%s' deleted\n") % mark) |
1274 |
1281 |
|
1282 |
|
1283 |
|
1284 def _getmetadata(**opts): |
|
1285 metadata = {} |
|
1286 date = opts.get('date') |
|
1287 user = opts.get('user') |
|
1288 if date and '0 0' != date: |
|
1289 metadata['date'] = '%i %i' % util.parsedate(date) |
|
1290 if user: |
|
1291 metadata['user'] = user |
|
1292 return metadata |
|
1293 |
|
1294 |
1275 @command('^prune|obsolete|kill', |
1295 @command('^prune|obsolete|kill', |
1276 [('n', 'new', [], _("successor changeset (DEPRECATED)")), |
1296 [('n', 'new', [], _("successor changeset (DEPRECATED)")), |
1277 ('s', 'succ', [], _("successor changeset")), |
1297 ('s', 'succ', [], _("successor changeset")), |
1278 ('r', 'rev', [], _("revisions to prune")), |
1298 ('r', 'rev', [], _("revisions to prune")), |
1279 ('B', 'bookmark', '', _("remove revs only reachable from given" |
1299 ('B', 'bookmark', '', _("remove revs only reachable from given" |
1280 " bookmark"))], |
1300 " bookmark"))] + metadataopts, |
1281 _('[OPTION] [-r] REV...')) |
1301 _('[OPTION] [-r] REV...')) |
1282 # -d --date |
|
1283 # -u --user |
|
1284 # -U --noupdate option to prevent wc update and or bookmarks update ? |
1302 # -U --noupdate option to prevent wc update and or bookmarks update ? |
1285 def cmdprune(ui, repo, *revs, **opts): |
1303 def cmdprune(ui, repo, *revs, **opts): |
1286 """get rid of changesets by marking them obsolete |
1304 """get rid of changesets by marking them obsolete |
1287 |
1305 |
1288 Obsolete changesets becomes invisible to all commands. |
1306 Obsolete changesets becomes invisible to all commands. |
1297 of the pruned changeset exists. |
1315 of the pruned changeset exists. |
1298 """ |
1316 """ |
1299 revs = set(scmutil.revrange(repo, list(revs) + opts.get('rev'))) |
1317 revs = set(scmutil.revrange(repo, list(revs) + opts.get('rev'))) |
1300 succs = opts['new'] + opts['succ'] |
1318 succs = opts['new'] + opts['succ'] |
1301 bookmark = opts.get('bookmark') |
1319 bookmark = opts.get('bookmark') |
|
1320 metadata = _getmetadata(**opts) |
1302 |
1321 |
1303 if bookmark: |
1322 if bookmark: |
1304 marks,revs = _reachablefrombookmark(repo, revs, bookmark) |
1323 marks,revs = _reachablefrombookmark(repo, revs, bookmark) |
1305 if not revs: |
1324 if not revs: |
1306 # no revisions to prune - delete bookmark immediately |
1325 # no revisions to prune - delete bookmark immediately |
1330 sucs = tuple(repo[n] for n in sortedrevs(succs)) |
1349 sucs = tuple(repo[n] for n in sortedrevs(succs)) |
1331 if len(sucs) > 1 and len(precs) > 1: |
1350 if len(sucs) > 1 and len(precs) > 1: |
1332 msg = "Can't use multiple successors for multiple precursors" |
1351 msg = "Can't use multiple successors for multiple precursors" |
1333 raise util.Abort(msg) |
1352 raise util.Abort(msg) |
1334 # create markers |
1353 # create markers |
1335 createmarkers(repo, [(p, sucs) for p in precs]) |
1354 createmarkers(repo, [(p, sucs) for p in precs], metadata=metadata) |
|
1355 |
1336 # informs that changeset have been pruned |
1356 # informs that changeset have been pruned |
1337 ui.status(_('%i changesets pruned\n') % len(precs)) |
1357 ui.status(_('%i changesets pruned\n') % len(precs)) |
1338 # update to an unkilled parent |
1358 # update to an unkilled parent |
1339 wdp = repo['.'] |
1359 wdp = repo['.'] |
1340 newnode = wdp |
1360 newnode = wdp |