I just discovered diff-so-fancy, and very nice it is too. I immediately added it to my standard git config, which is semi-automatically installed on every machine I use. However, I've not (yet) installed diff-so-fancy on all the machines I use, and for those platforms for which it's not packaged I probably won't bother installing it from source.
But if I just follow the author's instructions which amount to adding this to my ~/.gitconfig:
[core]
pager = "diff-so-fancy | less --tabs=4 -RFX"
then git diff will break:
$ git diff HEAD^
diff-so-fancy | less --tabs=4 -RFX: diff-so-fancy: command not found
but there's an easy fix! Whatever is in pager is just shell code, so this works:
[core]
pager = "if [ ! -z \"$(which diff-so-fancy)\" ]; then diff-so-fancy | less --tabs=4 -RFX; else less; fi"
The output from git diff is piped into that little script. If diff-so-fancy is installed (ie if "$(which diff-so-fancy)" is not zero-length) then it does exactly what diff-so-fancy's author suggests. Otherwise, if diff-so-fancy isn't installed, just run less.
Top comments (2)
Very nice tool ! Thank you @drhyde to allow me to discover such gem ! 😊
I personally prefer github.com/dandavison/delta