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.
--- 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)