Search code examples
c++gitindentationpretty-printgit-diff

Git Diff Indent/Pretty Print/Beautify Before Diff


Is there a way to make Git indent/beautify/pretty print two versions of C++ source files before diffing them?

I don't want Git to show me the myriads of changes introduced after someone auto-formatted the code.

Example usage: I hit git difftool --indent-before-diffing path/to/file and get the changes after both the original version of path/to/file and the modified version of path/to/file have been indented.


Solution

  • If you can find an application that does the indenting for you, you could use the method described here for odt files:

    Add the following line to your .gitattributes file:

    *.odt diff=odt

    Now set up the odt diff filter in .git/config:

    [diff "odt"]
        binary = true
        textconv = /usr/local/bin/odt-to-txt
    

    So for C++ files it would be something like this:

    *.cpp diff=cpp
    

    And in the .git/config:

    [diff "cpp"]
        textconv = /path/to/indenter
    

    As pointed out in the comments, GNU Indent can be used for indenting.