DEV Community

David Cantrell
David Cantrell

Posted on

2

TIL: diff-so-fancy; and some funky git config

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"
Enter fullscreen mode Exit fullscreen mode

then git diff will break:

$ git diff HEAD^
diff-so-fancy | less --tabs=4 -RFX: diff-so-fancy: command not found
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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.

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (2)

Collapse
 
10xlearner profile image
10x learner

Very nice tool ! Thank you @drhyde to allow me to discover such gem ! 😊

Image description

Collapse
 
karnerth profile image
Thomas Karner

I personally prefer github.com/dandavison/delta

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs