compat: only install the better filtered message for mercurial 4.2 and above
authorPierre-Yves David <pierre-yves.david@ens-lyon.org>
Mon, 01 May 2017 06:06:41 +0200
changeset 2293 1659b42c28c2
parent 2292 f026e85bd0b2
child 2294 75996eafab43
compat: only install the better filtered message for mercurial 4.2 and above The helper function does not exist in earlier version.
hgext3rd/evolve/__init__.py
--- a/hgext3rd/evolve/__init__.py	Sat Apr 29 05:35:01 2017 +0200
+++ b/hgext3rd/evolve/__init__.py	Mon May 01 06:06:41 2017 +0200
@@ -533,6 +533,39 @@
 
     ui.warn("(%s)\n" % solvemsg)
 
+if util.safehasattr(context, '_filterederror'):
+    # if < hg-4.2 we do not update the message
+    @eh.wrapfunction(context, '_filterederror')
+    def evolve_filtererror(original, repo, changeid):
+        """build an exception to be raised about a filtered changeid
+
+        This is extracted in a function to help extensions (eg: evolve) to
+        experiment with various message variants."""
+        if repo.filtername.startswith('visible'):
+
+            unfilteredrepo = repo.unfiltered()
+            rev = unfilteredrepo[changeid]
+            reason, successors = _getobsoletereason(unfilteredrepo, rev.node())
+
+            # Be more precise in cqse the revision is superseed
+            if reason == 'superseed':
+                reason = _("successor: %s") % successors[0]
+            elif reason == 'superseed_split':
+                if len(successors) <= 2:
+                    reason = _("successors: %s") % ", ".join(successors)
+                else:
+                    firstsuccessors = ", ".join(successors[:2])
+                    remainingnumber = len(successors) - 2
+                    successorsmsg = _("%s and %d more") % (firstsuccessors, remainingnumber)
+                    reason = _("successors: %s") % successorsmsg
+
+            msg = _("hidden revision '%s'") % changeid
+            hint = _('use --hidden to access hidden revisions; %s') % reason
+            return error.FilteredRepoLookupError(msg, hint=hint)
+        msg = _("filtered revision '%s' (not in '%s' subset)")
+        msg %= (changeid, repo.filtername)
+        return error.FilteredRepoLookupError(msg)
+
 @eh.wrapcommand("update")
 @eh.wrapcommand("pull")
 def wrapmayobsoletewc(origfn, ui, repo, *args, **opts):
@@ -3203,35 +3236,3 @@
                 f.write(orig.topic())
 
     return merge.graft(repo, orig, pctx, ['local', 'graft'], True)
-
-
-@eh.wrapfunction(context, '_filterederror')
-def evolve_filtererror(original, repo, changeid):
-    """build an exception to be raised about a filtered changeid
-
-    This is extracted in a function to help extensions (eg: evolve) to
-    experiment with various message variants."""
-    if repo.filtername.startswith('visible'):
-
-        unfilteredrepo = repo.unfiltered()
-        rev = unfilteredrepo[changeid]
-        reason, successors = _getobsoletereason(unfilteredrepo, rev.node())
-
-        # Be more precise in cqse the revision is superseed
-        if reason == 'superseed':
-            reason = _("successor: %s") % successors[0]
-        elif reason == 'superseed_split':
-            if len(successors) <= 2:
-                reason = _("successors: %s") % ", ".join(successors)
-            else:
-                firstsuccessors = ", ".join(successors[:2])
-                remainingnumber = len(successors) - 2
-                successorsmsg = _("%s and %d more") % (firstsuccessors, remainingnumber)
-                reason = _("successors: %s") % successorsmsg
-
-        msg = _("hidden revision '%s'") % changeid
-        hint = _('use --hidden to access hidden revisions; %s') % reason
-        return error.FilteredRepoLookupError(msg, hint=hint)
-    msg = _("filtered revision '%s' (not in '%s' subset)")
-    msg %= (changeid, repo.filtername)
-    return error.FilteredRepoLookupError(msg)