Show More
@@ -488,22 +488,33 class queue: | |||||
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 |
|
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() | |
@@ -512,7 +523,7 class queue: | |||||
512 | else: |
|
523 | else: | |
513 | os.unlink(self.join(patch)) |
|
524 | os.unlink(self.join(patch)) | |
514 |
|
525 | |||
515 |
if |
|
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] | |
@@ -1351,10 +1362,10 class queue: | |||||
1351 | if qrepo: |
|
1362 | if qrepo: | |
1352 | qrepo.add(added) |
|
1363 | qrepo.add(added) | |
1353 |
|
1364 | |||
1354 |
def delete(ui, repo |
|
1365 | def delete(ui, repo, *patches, **opts): | |
1355 | """remove patches from queue |
|
1366 | """remove patches from queue | |
1356 |
|
1367 | |||
1357 |
With -- |
|
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 | |||
@@ -1362,7 +1373,7 def delete(ui, repo, patch, *patches, ** | |||||
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, |
|
1376 | q.delete(repo, patches, opts) | |
1366 | q.save_dirty() |
|
1377 | q.save_dirty() | |
1367 | return 0 |
|
1378 | return 0 | |
1368 |
|
1379 | |||
@@ -2018,9 +2029,9 cmdtable = { | |||||
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 |
[(' |
|
2032 | [('k', 'keep', None, _('keep patch file')), | |
2022 |
(' |
|
2033 | ('r', 'rev', [], _('stop managing a revision'))], | |
2023 |
'hg qdelete [- |
|
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')), |
General Comments 0
You need to be logged in to leave comments.
Login now