Mercurial > hg > mercurial-crew-with-dirclash
comparison hgext/mq.py @ 2757:787e18b84893
merge patches from brendan cully that did not apply clean against tip.
author | Vadim Gelfer <vadim.gelfer@gmail.com> |
---|---|
date | Tue, 01 Aug 2006 15:40:28 -0700 |
parents | caa6d992608b 5dfeda163bb7 |
children | 0327bd1c831c |
comparison
equal
deleted
inserted
replaced
2756:caa6d992608b | 2757:787e18b84893 |
---|---|
380 err = 1 | 380 err = 1 |
381 break | 381 break |
382 tr.close() | 382 tr.close() |
383 return (err, n) | 383 return (err, n) |
384 | 384 |
385 def delete(self, repo, patch): | 385 def delete(self, repo, patch, force=False): |
386 patch = self.lookup(patch, strict=True) | 386 patch = self.lookup(patch, strict=True) |
387 info = self.isapplied(patch) | 387 info = self.isapplied(patch) |
388 if info: | 388 if info: |
389 raise util.Abort(_("cannot delete applied patch %s") % patch) | 389 raise util.Abort(_("cannot delete applied patch %s") % patch) |
390 if patch not in self.series: | 390 if patch not in self.series: |
391 raise util.Abort(_("patch %s not in series file") % patch) | 391 raise util.Abort(_("patch %s not in series file") % patch) |
392 if force: | |
393 r = self.qrepo() | |
394 if r: | |
395 r.remove([patch], True) | |
396 else: | |
397 os.unlink(os.path.join(self.path, patch)) | |
392 i = self.find_series(patch) | 398 i = self.find_series(patch) |
393 del self.full_series[i] | 399 del self.full_series[i] |
394 self.read_series(self.full_series) | 400 self.read_series(self.full_series) |
395 self.series_dirty = 1 | 401 self.series_dirty = 1 |
396 | 402 |
1163 qrepo = self.qrepo() | 1169 qrepo = self.qrepo() |
1164 if qrepo: | 1170 if qrepo: |
1165 qrepo.add(added) | 1171 qrepo.add(added) |
1166 | 1172 |
1167 def delete(ui, repo, patch, **opts): | 1173 def delete(ui, repo, patch, **opts): |
1168 """remove a patch from the series file""" | 1174 """remove a patch from the series file |
1175 | |
1176 The patch must not be applied. | |
1177 With -f, deletes the patch file as well as the series entry.""" | |
1169 q = repo.mq | 1178 q = repo.mq |
1170 q.delete(repo, patch) | 1179 q.delete(repo, patch, force=opts.get('force')) |
1171 q.save_dirty() | 1180 q.save_dirty() |
1172 return 0 | 1181 return 0 |
1173 | 1182 |
1174 def applied(ui, repo, patch=None, **opts): | 1183 def applied(ui, repo, patch=None, **opts): |
1175 """print the patches already applied""" | 1184 """print the patches already applied""" |
1446 q = repo.mq | 1455 q = repo.mq |
1447 q.pop(repo, patch, force=opts['force'], update=localupdate, all=opts['all']) | 1456 q.pop(repo, patch, force=opts['force'], update=localupdate, all=opts['all']) |
1448 q.save_dirty() | 1457 q.save_dirty() |
1449 return 0 | 1458 return 0 |
1450 | 1459 |
1460 def rename(ui, repo, patch, name=None, **opts): | |
1461 """rename a patch | |
1462 | |
1463 With one argument, renames the current patch to PATCH1. | |
1464 With two arguments, renames PATCH1 to PATCH2.""" | |
1465 | |
1466 q = repo.mq | |
1467 | |
1468 if not name: | |
1469 name = patch | |
1470 patch = None | |
1471 | |
1472 if name in q.series: | |
1473 raise util.Abort(_('A patch named %s already exists in the series file') % name) | |
1474 | |
1475 absdest = os.path.join(q.path, name) | |
1476 if os.path.exists(absdest): | |
1477 raise util.Abort(_('%s already exists') % absdest) | |
1478 | |
1479 if patch: | |
1480 patch = q.lookup(patch) | |
1481 else: | |
1482 if not q.applied: | |
1483 ui.write(_('No patches applied\n')) | |
1484 return | |
1485 patch = q.lookup('qtip') | |
1486 | |
1487 if ui.verbose: | |
1488 ui.write('Renaming %s to %s\n' % (patch, name)) | |
1489 i = q.find_series(patch) | |
1490 q.full_series[i] = name | |
1491 q.read_series(q.full_series) | |
1492 q.series_dirty = 1 | |
1493 | |
1494 info = q.isapplied(patch) | |
1495 if info: | |
1496 q.applied[info[0]] = info[1] + ':' + name | |
1497 q.applied_dirty = 1 | |
1498 | |
1499 util.rename(os.path.join(q.path, patch), absdest) | |
1500 r = q.qrepo() | |
1501 if r: | |
1502 wlock = r.wlock() | |
1503 if r.dirstate.state(name) == 'r': | |
1504 r.undelete([name], wlock) | |
1505 r.copy(patch, name, wlock) | |
1506 r.remove([patch], False, wlock) | |
1507 | |
1508 q.save_dirty() | |
1509 | |
1451 def restore(ui, repo, rev, **opts): | 1510 def restore(ui, repo, rev, **opts): |
1452 """restore the queue state saved by a rev""" | 1511 """restore the queue state saved by a rev""" |
1453 rev = repo.lookup(rev) | 1512 rev = repo.lookup(rev) |
1454 q = repo.mq | 1513 q = repo.mq |
1455 q.restore(repo, rev, delete=opts['delete'], | 1514 q.restore(repo, rev, delete=opts['delete'], |
1544 "qcommit|qci": | 1603 "qcommit|qci": |
1545 (commit, | 1604 (commit, |
1546 commands.table["^commit|ci"][1], | 1605 commands.table["^commit|ci"][1], |
1547 'hg qcommit [OPTION]... [FILE]...'), | 1606 'hg qcommit [OPTION]... [FILE]...'), |
1548 "^qdiff": (diff, [], 'hg qdiff [FILE]...'), | 1607 "^qdiff": (diff, [], 'hg qdiff [FILE]...'), |
1549 "qdelete": (delete, [], 'hg qdelete PATCH'), | 1608 "qdelete": |
1609 (delete, | |
1610 [('f', 'force', None, _('delete patch file'))], | |
1611 'hg qdelete [-f] PATCH'), | |
1550 'qfold': | 1612 'qfold': |
1551 (fold, | 1613 (fold, |
1552 [('e', 'edit', None, _('edit patch header')), | 1614 [('e', 'edit', None, _('edit patch header')), |
1553 ('m', 'message', '', _('set patch header to <text>')), | 1615 ('m', 'message', '', _('set patch header to <text>')), |
1554 ('l', 'logfile', '', _('set patch header to contents of <file>'))], | 1616 ('l', 'logfile', '', _('set patch header to contents of <file>'))], |
1592 [('e', 'edit', None, _('edit commit message')), | 1654 [('e', 'edit', None, _('edit commit message')), |
1593 ('m', 'message', '', _('change commit message with <text>')), | 1655 ('m', 'message', '', _('change commit message with <text>')), |
1594 ('l', 'logfile', '', _('change commit message with <file> content')), | 1656 ('l', 'logfile', '', _('change commit message with <file> content')), |
1595 ('s', 'short', None, 'short refresh')], | 1657 ('s', 'short', None, 'short refresh')], |
1596 'hg qrefresh [-e] [-m TEXT] [-l FILE] [-s]'), | 1658 'hg qrefresh [-e] [-m TEXT] [-l FILE] [-s]'), |
1659 'qrename|qmv': | |
1660 (rename, [], 'hg qrename PATCH1 [PATCH2]'), | |
1597 "qrestore": | 1661 "qrestore": |
1598 (restore, | 1662 (restore, |
1599 [('d', 'delete', None, 'delete save entry'), | 1663 [('d', 'delete', None, 'delete save entry'), |
1600 ('u', 'update', None, 'update queue working dir')], | 1664 ('u', 'update', None, 'update queue working dir')], |
1601 'hg qrestore [-d] [-u] REV'), | 1665 'hg qrestore [-d] [-u] REV'), |