mq: extract checksubstate from the queue class
authorPierre-Yves David <pierre-yves.david@ens-lyon.org>
Wed, 25 Sep 2013 11:24:43 +0200
changeset 19813 76796fe65bad
parent 19812 5d6cfdc38a3d
child 19814 4495c6a272e0
mq: extract checksubstate from the queue class This function does not need any of the the `mq.queue` method or attributes. It is indirectly used by the `strip` command. We are trying to extract this command in a standalone extension as discussed in issue issue3824.
hgext/mq.py
--- a/hgext/mq.py	Wed Sep 25 12:28:40 2013 +0200
+++ b/hgext/mq.py	Wed Sep 25 11:24:43 2013 +0200
@@ -945,23 +945,6 @@
             return top, patch
         return None, None
 
-    def checksubstate(self, repo, baserev=None):
-        '''return list of subrepos at a different revision than substate.
-        Abort if any subrepos have uncommitted changes.'''
-        inclsubs = []
-        wctx = repo[None]
-        if baserev:
-            bctx = repo[baserev]
-        else:
-            bctx = wctx.parents()[0]
-        for s in sorted(wctx.substate):
-            if wctx.sub(s).dirty(True):
-                raise util.Abort(
-                    _("uncommitted changes in subrepository %s") % s)
-            elif s not in bctx.substate or bctx.sub(s).dirty():
-                inclsubs.append(s)
-        return inclsubs
-
     def putsubstate2changes(self, substatestate, changes):
         for files in changes[:3]:
             if '.hgsubstate' in files:
@@ -987,7 +970,7 @@
             if (m or a or r or d):
                 _("local changes found") # i18n tool detection
                 raise util.Abort(_("local changes found" + excsuffix))
-            if self.checksubstate(repo):
+            if checksubstate(repo):
                 _("local changed subrepos found") # i18n tool detection
                 raise util.Abort(_("local changed subrepos found" + excsuffix))
         return m, a, r, d
@@ -1031,7 +1014,7 @@
         diffopts = self.diffopts({'git': opts.get('git')})
         if opts.get('checkname', True):
             self.checkpatchname(patchfn)
-        inclsubs = self.checksubstate(repo)
+        inclsubs = checksubstate(repo)
         if inclsubs:
             inclsubs.append('.hgsubstate')
             substatestate = repo.dirstate['.hgsubstate']
@@ -1505,7 +1488,7 @@
             cparents = repo.changelog.parents(top)
             patchparent = self.qparents(repo, top)
 
-            inclsubs = self.checksubstate(repo, hex(patchparent))
+            inclsubs = checksubstate(repo, hex(patchparent))
             if inclsubs:
                 inclsubs.append('.hgsubstate')
                 substatestate = repo.dirstate['.hgsubstate']
@@ -2931,6 +2914,24 @@
         q.savedirty()
     return 0
 
+def checksubstate(repo, baserev=None):
+    '''return list of subrepos at a different revision than substate.
+    Abort if any subrepos have uncommitted changes.'''
+    inclsubs = []
+    wctx = repo[None]
+    if baserev:
+        bctx = repo[baserev]
+    else:
+        bctx = wctx.parents()[0]
+    for s in sorted(wctx.substate):
+        if wctx.sub(s).dirty(True):
+            raise util.Abort(
+                _("uncommitted changes in subrepository %s") % s)
+        elif s not in bctx.substate or bctx.sub(s).dirty():
+            inclsubs.append(s)
+    return inclsubs
+
+
 @command("strip",
          [
           ('r', 'rev', [], _('strip specified revision (optional, '