Mercurial > hg
comparison hgext/mq.py @ 3373:9851f46d6ecc
mq: change qdel --forget to --rev; accept any revision symbol
author | Brendan Cully <brendan@kublai.com> |
---|---|
date | Thu, 12 Oct 2006 13:24:09 -0700 |
parents | 1d3aceae87c1 |
children | 58202386deb7 |
comparison
equal
deleted
inserted
replaced
3370:b7fe334ff4fb | 3373:9851f46d6ecc |
---|---|
486 tr.close() | 486 tr.close() |
487 return (err, n) | 487 return (err, n) |
488 | 488 |
489 def delete(self, repo, patches, opts): | 489 def delete(self, repo, patches, opts): |
490 realpatches = [] | 490 realpatches = [] |
491 appliedbase = 0 | |
492 forget = opts.get('forget') | |
493 for patch in patches: | 491 for patch in patches: |
494 patch = self.lookup(patch, strict=True) | 492 patch = self.lookup(patch, strict=True) |
495 info = self.isapplied(patch) | 493 info = self.isapplied(patch) |
496 if info and not forget: | 494 if info: |
497 raise util.Abort(_("cannot delete applied patch %s") % patch) | 495 raise util.Abort(_("cannot delete applied patch %s") % patch) |
498 if patch not in self.series: | 496 if patch not in self.series: |
499 raise util.Abort(_("patch %s not in series file") % patch) | 497 raise util.Abort(_("patch %s not in series file") % patch) |
500 if forget: | 498 realpatches.append(patch) |
501 if not info: | 499 |
502 raise util.Abort(_("cannot forget unapplied patch %s") % patch) | 500 appliedbase = 0 |
503 if info[0] != appliedbase: | 501 if opts.get('rev'): |
504 raise util.Abort(_("patch %s not at base") % patch) | 502 if not self.applied: |
503 raise util.Abort(_('no patches applied')) | |
504 revs = [int(r) for r in cmdutil.revrange(ui, repo, opts['rev'])] | |
505 if len(revs) > 1 and revs[0] > revs[1]: | |
506 revs.reverse() | |
507 for rev in revs: | |
508 if appliedbase >= len(self.applied): | |
509 raise util.Abort(_("revision %d is not managed") % rev) | |
510 | |
511 base = revlog.bin(self.applied[appliedbase].rev) | |
512 node = repo.changelog.node(rev) | |
513 if node != base: | |
514 raise util.Abort(_("cannot delete revision %d above " | |
515 "applied patches") % rev) | |
516 realpatches.append(self.applied[appliedbase].name) | |
505 appliedbase += 1 | 517 appliedbase += 1 |
506 realpatches.append(patch) | |
507 | 518 |
508 if not opts.get('keep'): | 519 if not opts.get('keep'): |
509 r = self.qrepo() | 520 r = self.qrepo() |
510 if r: | 521 if r: |
511 r.remove(realpatches, True) | 522 r.remove(realpatches, True) |
512 else: | 523 else: |
513 os.unlink(self.join(patch)) | 524 os.unlink(self.join(patch)) |
514 | 525 |
515 if forget: | 526 if appliedbase: |
516 del self.applied[:appliedbase] | 527 del self.applied[:appliedbase] |
517 self.applied_dirty = 1 | 528 self.applied_dirty = 1 |
518 indices = [self.find_series(p) for p in realpatches] | 529 indices = [self.find_series(p) for p in realpatches] |
519 indices.sort() | 530 indices.sort() |
520 for i in indices[-1::-1]: | 531 for i in indices[-1::-1]: |
1349 self.series_dirty = 1 | 1360 self.series_dirty = 1 |
1350 qrepo = self.qrepo() | 1361 qrepo = self.qrepo() |
1351 if qrepo: | 1362 if qrepo: |
1352 qrepo.add(added) | 1363 qrepo.add(added) |
1353 | 1364 |
1354 def delete(ui, repo, patch, *patches, **opts): | 1365 def delete(ui, repo, *patches, **opts): |
1355 """remove patches from queue | 1366 """remove patches from queue |
1356 | 1367 |
1357 With --forget, mq will stop managing the named patches. The | 1368 With --rev, mq will stop managing the named revisions. The |
1358 patches must be applied and at the base of the stack. This option | 1369 patches must be applied and at the base of the stack. This option |
1359 is useful when the patches have been applied upstream. | 1370 is useful when the patches have been applied upstream. |
1360 | 1371 |
1361 Otherwise, the patches must not be applied. | 1372 Otherwise, the patches must not be applied. |
1362 | 1373 |
1363 With --keep, the patch files are preserved in the patch directory.""" | 1374 With --keep, the patch files are preserved in the patch directory.""" |
1364 q = repo.mq | 1375 q = repo.mq |
1365 q.delete(repo, (patch,) + patches, opts) | 1376 q.delete(repo, patches, opts) |
1366 q.save_dirty() | 1377 q.save_dirty() |
1367 return 0 | 1378 return 0 |
1368 | 1379 |
1369 def applied(ui, repo, patch=None, **opts): | 1380 def applied(ui, repo, patch=None, **opts): |
1370 """print the patches already applied""" | 1381 """print the patches already applied""" |
2016 [('I', 'include', [], _('include names matching the given patterns')), | 2027 [('I', 'include', [], _('include names matching the given patterns')), |
2017 ('X', 'exclude', [], _('exclude names matching the given patterns'))], | 2028 ('X', 'exclude', [], _('exclude names matching the given patterns'))], |
2018 'hg qdiff [-I] [-X] [FILE]...'), | 2029 'hg qdiff [-I] [-X] [FILE]...'), |
2019 "qdelete|qremove|qrm": | 2030 "qdelete|qremove|qrm": |
2020 (delete, | 2031 (delete, |
2021 [('f', 'forget', None, _('stop managing an applied patch')), | 2032 [('k', 'keep', None, _('keep patch file')), |
2022 ('k', 'keep', None, _('keep patch file'))], | 2033 ('r', 'rev', [], _('stop managing a revision'))], |
2023 'hg qdelete [-f] [-k] PATCH'), | 2034 'hg qdelete [-k] [-r REV]... PATCH...'), |
2024 'qfold': | 2035 'qfold': |
2025 (fold, | 2036 (fold, |
2026 [('e', 'edit', None, _('edit patch header')), | 2037 [('e', 'edit', None, _('edit patch header')), |
2027 ('k', 'keep', None, _('keep folded patch files')), | 2038 ('k', 'keep', None, _('keep folded patch files')), |
2028 ('m', 'message', '', _('set patch header to <text>')), | 2039 ('m', 'message', '', _('set patch header to <text>')), |