# HG changeset patch # User Pierre-Yves David # Date 1487695804 -3600 # Node ID 96d561c90ad0a0841e549af7e35aa1f5b80ab1e2 # Parent 9021a94a7dbf63f1805cba95d7ffb334aa6b7f65 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. diff -r 9021a94a7dbf -r 96d561c90ad0 hgext/color.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( diff -r 9021a94a7dbf -r 96d561c90ad0 mercurial/subrepo.py --- 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)