--- a/hgext/strip.py Thu Sep 26 23:32:52 2013 +0200
+++ b/hgext/strip.py Thu Sep 26 23:43:00 2013 +0200
@@ -1,5 +1,8 @@
from mercurial.i18n import _
-from mercurial import cmdutil, util
+from mercurial import cmdutil, hg, util
+from mercurial.node import nullid
+from mercurial.lock import release
+from mercurial import repair
cmdtable = {}
command = cmdutil.command(cmdtable)
@@ -34,3 +37,21 @@
raise util.Abort(_("local changed subrepos found" + excsuffix))
return m, a, r, d
+def strip(ui, repo, revs, update=True, backup="all", force=None):
+ wlock = lock = None
+ try:
+ wlock = repo.wlock()
+ lock = repo.lock()
+
+ if update:
+ checklocalchanges(repo, force=force)
+ urev, p2 = repo.changelog.parents(revs[0])
+ if p2 != nullid and p2 in [x.node for x in repo.mq.applied]:
+ urev = p2
+ hg.clean(repo, urev)
+ repo.dirstate.write()
+
+ repair.strip(ui, repo, revs, backup)
+ finally:
+ release(lock, wlock)
+