Re: Adding color to git diff output.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 11 Apr 2006 17:34:10 -0700 (PDT)
Linus Torvalds <torvalds@xxxxxxxx> wrote:

> On Tue, 11 Apr 2006, Junio C Hamano wrote:
> 
> > sean <seanlkml@xxxxxxxxxxxx> writes:
> > 
> > > Linus posted a colorize program a while back[1] but it wasn't taken into git.  
> > > The patch below takes a different approach, adding a GIT_DIFF_PAGER variable.
> > > You can use it by assigning a filter to the environment variable, like so:
> > >
> > > export GIT_DIFF_PAGER="colordiff | less -RS"
> > 
> > Sounds like a nice idea, even maybe suitable in a FAQ.
> > Unfortunately colordiff does not seem to grok diff --cc output,
> > but that is fine ;-).
> 
> Well, the real problem - at least as far as my usage is concerned - is 
> that I'd want colorization to be more integrated so that it can be turned 
> off when not appropriate.
> 
> Think "colorized 'ls'", where if you enable colorization by default, it 
> only colorizes when the output is a tty, so that you can still script 
> things and output things to a file or so, without it getting colorized. 
> 
> Because most "patch" programs (git-apply included) do not want to see 
> colorization ;)
> 
> So I'd suggest that the "git diff" script at a minimum first check whether 
> the output is to a tty before it decides to use GIT_DIFF_PAGER. With 
> perhaps an option to _force_ colorization if you want to.
> 
> Now, I don't actually enable ls-colorization by default, and I probably 
> wouldn't do it for git diff either, but at least for diffs I _might_. But 
> I'd definitely want it to be turned off automatically so that I can do
> 
> 	git diff .. > ~/patch-file
> 
> without having to remember to turn it off explicitly.
> 

What I have is a script ~/bin/gitcdiff:

#!/bin/sh
tty -s <&1 || exec cat
colordiff | less -RS

And then setting GIT_DIFF_PAGER="~/bin/gitcdiff".  When piping to a file 
it just uses cat, but when the output is a terminal device it uses the 
colordiff.

I thought about integrating that logic into git-diff.sh, but i'm not sure
it's always appropriate.

Sean
-
: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]