1236 displayer.show(c) |
1236 displayer.show(c) |
1237 ui.warn(_('Multiple non-obsolete children, explicitly update to one\n')) |
1237 ui.warn(_('Multiple non-obsolete children, explicitly update to one\n')) |
1238 return 1 |
1238 return 1 |
1239 |
1239 |
1240 @command('^prune|obsolete|kill', |
1240 @command('^prune|obsolete|kill', |
1241 [('n', 'new', [], _("successor changeset")), |
1241 [('n', 'new', [], _("successor changeset (DEPRECATED)")), |
|
1242 ('s', 'succ', [], _("successor changeset")), |
1242 ('r', 'rev', [], _("revisions to prune"))], |
1243 ('r', 'rev', [], _("revisions to prune"))], |
1243 _('[OPTION] [-r] REV...')) |
1244 _('[OPTION] [-r] REV...')) |
1244 def cmdprune(ui, repo, *revs, **opts): |
1245 def cmdprune(ui, repo, *revs, **opts): |
1245 """mark a changeset as obsolete |
1246 """mark a changeset as obsolete |
1246 |
1247 |
1251 XXX handle merge |
1252 XXX handle merge |
1252 XXX check immutable first |
1253 XXX check immutable first |
1253 """ |
1254 """ |
1254 revs = list(revs) |
1255 revs = list(revs) |
1255 revs.extend(opts['rev']) |
1256 revs.extend(opts['rev']) |
|
1257 succs = opts['new'] + opts['succ'] |
1256 wlock = repo.wlock() |
1258 wlock = repo.wlock() |
1257 try: |
1259 try: |
1258 lock = repo.lock() |
1260 lock = repo.lock() |
1259 try: |
1261 try: |
1260 new = set(scmutil.revrange(repo, opts['new'])) |
1262 new = set(scmutil.revrange(repo, succs)) |
1261 targetnodes = set(scmutil.revrange(repo, revs)) |
1263 targetnodes = set(scmutil.revrange(repo, revs)) |
1262 if not targetnodes: |
1264 if not targetnodes: |
1263 raise util.Abort('nothing to prune') |
1265 raise util.Abort('nothing to prune') |
1264 if new: |
1266 if new: |
1265 sucs = tuple(repo[n] for n in new) |
1267 sucs = tuple(repo[n] for n in new) |