diff mercurial/dispatch.py @ 22376:d821fff9b0b9 stable

dispatch: make "_checkshellalias" reusable regardless of adding aliases To reduce changes in the subsequent patch fixing issue4355, this patch makes "_checkshellalias" reusable regardless of adding aliases. In this patch, alias definitions are added and restored, only when "precheck=True".
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Wed, 10 Sep 2014 00:41:44 +0900
parents af15de6775c7
children f98abe3146b2
line wrap: on
line diff
--- a/mercurial/dispatch.py	Wed Sep 03 20:42:51 2014 +0200
+++ b/mercurial/dispatch.py	Wed Sep 10 00:41:44 2014 +0900
@@ -627,7 +627,12 @@
 
     return path, lui
 
-def _checkshellalias(lui, ui, args):
+def _checkshellalias(lui, ui, args, precheck=True):
+    """Return the function to run the shell alias, if it is required
+
+    'precheck' is whether this function is invoked before adding
+    aliases or not.
+    """
     options = {}
 
     try:
@@ -638,14 +643,18 @@
     if not args:
         return
 
-    norepo = commands.norepo
-    optionalrepo = commands.optionalrepo
-    def restorecommands():
-        commands.norepo = norepo
-        commands.optionalrepo = optionalrepo
-
-    cmdtable = commands.table.copy()
-    addaliases(lui, cmdtable)
+    if precheck:
+        norepo = commands.norepo
+        optionalrepo = commands.optionalrepo
+        def restorecommands():
+            commands.norepo = norepo
+            commands.optionalrepo = optionalrepo
+        cmdtable = commands.table.copy()
+        addaliases(lui, cmdtable)
+    else:
+        def restorecommands():
+            pass
+        cmdtable = commands.table
 
     cmd = args[0]
     try: