color: move git-subrepo support into the subrepo module
authorPierre-Yves David <pierre-yves.david@ens-lyon.org>
Tue, 21 Feb 2017 17:50:04 +0100
changeset 31102 96d561c90ad0
parent 31101 9021a94a7dbf
child 31103 c1997c5d1ae3
color: move git-subrepo support into the subrepo module Now that all ui instance carry a '_colormode' attribute, we can access and comply to it directly in the subrepo code. The actual implementation could probably be a bit smarter, but we stick close to the current one for the sake of simplicity.
hgext/color.py
mercurial/subrepo.py
--- a/hgext/color.py	Thu Dec 22 14:30:46 2016 +0100
+++ b/hgext/color.py	Tue Feb 21 17:50:04 2017 +0100
@@ -177,7 +177,6 @@
     commands,
     dispatch,
     extensions,
-    subrepo,
     ui as uimod,
 )
 
@@ -198,14 +197,7 @@
         if mode and mode != 'debug':
             color.configstyles(ui_)
         return orig(ui_, opts, cmd, cmdfunc)
-    def colorgit(orig, gitsub, commands, env=None, stream=False, cwd=None):
-        if gitsub.ui._colormode and len(commands) and commands[0] == "diff":
-                # insert the argument in the front,
-                # the end of git diff arguments is used for paths
-                commands.insert(1, '--color')
-        return orig(gitsub, commands, env, stream, cwd)
     extensions.wrapfunction(dispatch, '_runcommand', colorcmd)
-    extensions.wrapfunction(subrepo.gitsubrepo, '_gitnodir', colorgit)
 
 def extsetup(ui):
     commands.globalopts.append(
--- a/mercurial/subrepo.py	Thu Dec 22 14:30:46 2016 +0100
+++ b/mercurial/subrepo.py	Tue Feb 21 17:50:04 2017 +0100
@@ -1414,6 +1414,10 @@
         errpipe = None
         if self.ui.quiet:
             errpipe = open(os.devnull, 'w')
+        if self.ui._colormode and len(commands) and commands[0] == "diff":
+            # insert the argument in the front,
+            # the end of git diff arguments is used for paths
+            commands.insert(1, '--color')
         p = subprocess.Popen([self._gitexecutable] + commands, bufsize=-1,
                              cwd=cwd, env=env, close_fds=util.closefds,
                              stdout=subprocess.PIPE, stderr=errpipe)