##// END OF EJS Templates
mq: extract `mq.queue.strip`...
Pierre-Yves David -
r19819:f0fc4d57 default
parent child Browse files
Show More
@@ -603,7 +603,7 b' class queue(object):'
603
603
604 # apply failed, strip away that rev and merge.
604 # apply failed, strip away that rev and merge.
605 hg.clean(repo, head)
605 hg.clean(repo, head)
606 self.strip(repo, [n], update=False, backup='strip')
606 strip(self.ui, repo, [n], update=False, backup='strip')
607
607
608 ctx = repo[rev]
608 ctx = repo[rev]
609 ret = hg.merge(repo, rev)
609 ret = hg.merge(repo, rev)
@@ -1103,24 +1103,6 b' class queue(object):'
1103 finally:
1103 finally:
1104 release(wlock)
1104 release(wlock)
1105
1105
1106 def strip(self, repo, revs, update=True, backup="all", force=None):
1107 wlock = lock = None
1108 try:
1109 wlock = repo.wlock()
1110 lock = repo.lock()
1111
1112 if update:
1113 checklocalchanges(repo, force=force)
1114 urev, p2 = repo.changelog.parents(revs[0])
1115 if p2 != nullid and p2 in [x.node for x in self.applied]:
1116 urev = p2
1117 hg.clean(repo, urev)
1118 repo.dirstate.write()
1119
1120 repair.strip(self.ui, repo, revs, backup)
1121 finally:
1122 release(lock, wlock)
1123
1124 def isapplied(self, patch):
1106 def isapplied(self, patch):
1125 """returns (index, rev, patch)"""
1107 """returns (index, rev, patch)"""
1126 for i, a in enumerate(self.applied):
1108 for i, a in enumerate(self.applied):
@@ -1443,7 +1425,7 b' class queue(object):'
1443 for patch in reversed(self.applied[start:end]):
1425 for patch in reversed(self.applied[start:end]):
1444 self.ui.status(_("popping %s\n") % patch.name)
1426 self.ui.status(_("popping %s\n") % patch.name)
1445 del self.applied[start:end]
1427 del self.applied[start:end]
1446 self.strip(repo, [rev], update=False, backup='strip')
1428 strip(self.ui, repo, [rev], update=False, backup='strip')
1447 for s, state in repo['.'].substate.items():
1429 for s, state in repo['.'].substate.items():
1448 repo['.'].sub(s).get(state)
1430 repo['.'].sub(s).get(state)
1449 if self.applied:
1431 if self.applied:
@@ -1646,8 +1628,7 b' class queue(object):'
1646 repo.setparents(*cparents)
1628 repo.setparents(*cparents)
1647 self.applied.pop()
1629 self.applied.pop()
1648 self.applieddirty = True
1630 self.applieddirty = True
1649 self.strip(repo, [top], update=False,
1631 strip(self.ui, repo, [top], update=False, backup='strip')
1650 backup='strip')
1651 except: # re-raises
1632 except: # re-raises
1652 repo.dirstate.invalidate()
1633 repo.dirstate.invalidate()
1653 raise
1634 raise
@@ -1819,7 +1800,7 b' class queue(object):'
1819 update = True
1800 update = True
1820 else:
1801 else:
1821 update = False
1802 update = False
1822 self.strip(repo, [rev], update=update, backup='strip')
1803 strip(self.ui, repo, [rev], update=update, backup='strip')
1823 if qpp:
1804 if qpp:
1824 self.ui.warn(_("saved queue repository parents: %s %s\n") %
1805 self.ui.warn(_("saved queue repository parents: %s %s\n") %
1825 (short(qpp[0]), short(qpp[1])))
1806 (short(qpp[0]), short(qpp[1])))
@@ -2300,7 +2281,7 b' def clone(ui, source, dest=None, **opts)'
2300 if qbase:
2281 if qbase:
2301 ui.note(_('stripping applied patches from destination '
2282 ui.note(_('stripping applied patches from destination '
2302 'repository\n'))
2283 'repository\n'))
2303 repo.mq.strip(repo, [qbase], update=False, backup=None)
2284 strip(ui, repo, [qbase], update=False, backup=None)
2304 if not opts.get('noupdate'):
2285 if not opts.get('noupdate'):
2305 ui.note(_('updating destination repository\n'))
2286 ui.note(_('updating destination repository\n'))
2306 hg.update(repo, repo.changelog.tip())
2287 hg.update(repo, repo.changelog.tip())
@@ -2944,6 +2925,24 b' def checklocalchanges(repo, force=False,'
2944 raise util.Abort(_("local changed subrepos found" + excsuffix))
2925 raise util.Abort(_("local changed subrepos found" + excsuffix))
2945 return m, a, r, d
2926 return m, a, r, d
2946
2927
2928 def strip(ui, repo, revs, update=True, backup="all", force=None):
2929 wlock = lock = None
2930 try:
2931 wlock = repo.wlock()
2932 lock = repo.lock()
2933
2934 if update:
2935 checklocalchanges(repo, force=force)
2936 urev, p2 = repo.changelog.parents(revs[0])
2937 if p2 != nullid and p2 in [x.node for x in repo.mq.applied]:
2938 urev = p2
2939 hg.clean(repo, urev)
2940 repo.dirstate.write()
2941
2942 repair.strip(ui, repo, revs, backup)
2943 finally:
2944 release(lock, wlock)
2945
2947
2946
2948 @command("strip",
2947 @command("strip",
2949 [
2948 [
@@ -2962,7 +2961,7 b' def checklocalchanges(repo, force=False,'
2962 ('B', 'bookmark', '', _("remove revs only reachable from given"
2961 ('B', 'bookmark', '', _("remove revs only reachable from given"
2963 " bookmark"))],
2962 " bookmark"))],
2964 _('hg strip [-k] [-f] [-n] [-B bookmark] [-r] REV...'))
2963 _('hg strip [-k] [-f] [-n] [-B bookmark] [-r] REV...'))
2965 def strip(ui, repo, *revs, **opts):
2964 def stripcmd(ui, repo, *revs, **opts):
2966 """strip changesets and all their descendants from the repository
2965 """strip changesets and all their descendants from the repository
2967
2966
2968 The strip command removes the specified changesets and all their
2967 The strip command removes the specified changesets and all their
@@ -3095,8 +3094,7 b' def strip(ui, repo, *revs, **opts):'
3095 marks.write()
3094 marks.write()
3096 ui.write(_("bookmark '%s' deleted\n") % mark)
3095 ui.write(_("bookmark '%s' deleted\n") % mark)
3097
3096
3098 repo.mq.strip(repo, revs, backup=backup, update=update,
3097 strip(ui, repo, revs, backup=backup, update=update, force=opts.get('force'))
3099 force=opts.get('force'))
3100
3098
3101 return 0
3099 return 0
3102
3100
General Comments 0
You need to be logged in to leave comments. Login now