mq: simplifies the refresh hint in checklocalchanges
authorPierre-Yves David <pierre-yves.david@ens-lyon.org>
Wed, 25 Sep 2013 12:28:40 +0200
changeset 19812 5d6cfdc38a3d
parent 19811 5e10d41e7b9c
child 19813 76796fe65bad
mq: simplifies the refresh hint in checklocalchanges The `checklocalchanges` function in the `mq.queue` class takes a `refresh` argument that changes the error message of raised exception. When refresh is `True` the exception message is "local changes found, refresh first" otherwise, the message is just "local changes found". This changeset is the first of a series that extract `strip` into a standalone extension (as discussed in issue3824). This `checklocalchanges` function is indirectly used by the strip command. But in a standalone strip extension the concept of "refresh first" has no sense. In practice, When used in the context of the strip commands `refresh`'s value is always `False`. So my final goal is a be able to extract the `checklocalchanges` logic in a standalone extension but to keep the part related to "refresh first" in the mq extension. However the refresh handling is deeply entangled into the `checklocalchanges` code. It is handled as low a possible at the point we raise the exception. So we moves handling of refresh upper in the `checklocalchanges` code. This will allow the extraction of a simple version in the strip extension while mq can still inject its logic when needed. Two helper functions `localchangesfound` and `localchangedsubreposfound` died in the process they are replaced by simple raise lines.
hgext/mq.py
--- a/hgext/mq.py	Fri Sep 06 00:38:28 2013 +0200
+++ b/hgext/mq.py	Wed Sep 25 12:28:40 2013 +0200
@@ -974,26 +974,22 @@
         else: # modified
             changes[0].append('.hgsubstate')
 
-    def localchangesfound(self, refresh=True):
+    def checklocalchanges(self, repo, force=False, refresh=True):
+        excsuffix = ''
         if refresh:
-            raise util.Abort(_("local changes found, refresh first"))
-        else:
-            raise util.Abort(_("local changes found"))
-
-    def localchangedsubreposfound(self, refresh=True):
-        if refresh:
-            raise util.Abort(_("local changed subrepos found, refresh first"))
-        else:
-            raise util.Abort(_("local changed subrepos found"))
-
-    def checklocalchanges(self, repo, force=False, refresh=True):
+            excsuffix = ', refresh first'
+            # plain versions for i18n tool to detect them
+            _("local changes found, refresh first")
+            _("local changed subrepos found, refresh first")
         cmdutil.checkunfinished(repo)
         m, a, r, d = repo.status()[:4]
         if not force:
             if (m or a or r or d):
-                self.localchangesfound(refresh)
+                _("local changes found") # i18n tool detection
+                raise util.Abort(_("local changes found" + excsuffix))
             if self.checksubstate(repo):
-                self.localchangedsubreposfound(refresh)
+                _("local changed subrepos found") # i18n tool detection
+                raise util.Abort(_("local changed subrepos found" + excsuffix))
         return m, a, r, d
 
     _reserved = ('series', 'status', 'guards', '.', '..')
@@ -1449,7 +1445,7 @@
 
                 tobackup = set(a + m + r) & tobackup
                 if keepchanges and tobackup:
-                    self.localchangesfound()
+                    raise util.Abort(_("local changes found, refresh first"))
                 self.backup(repo, tobackup)
 
                 for f in a: