2013-05-03 13 views
6

Czy istnieje sposób, aby Git indent/beautify/pretty wydrukować dwie wersje plików źródłowych C++ przed ich diffing?Git Diff Indent/Pretty Print/Beautify Before Diff

Myślę, że mój cel jest oczywisty: nie chcę, aby Git pokazał mi miriady zmian wprowadzonych przez jakiś głupi IDE po tym, jak jakaś małpa (taka jak ja) uderzyła w auto-format.

Przykładowe użycie: trafiam git difftool --indent-before-diffing path/to/file i otrzymam zmiany po wprowadzeniu oryginalnej wersji path/to/file i zmodyfikowanej wersji path/to/file.

Odpowiedz

8

Jeśli znajdziesz aplikację, która robi to wcięcia dla Ciebie, można użyć metody opisanej here dla odt plików:

dodać następującą linię do pliku .gitattributes:

*.odt diff=odt

teraz skonfigurować filtr odt diff w .git/config:

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

Więc dla plików C++ byłoby coś takiego:

*.cpp diff=cpp 

A w .git/config:

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

Jak zauważył w komentarzach, GNU Indent mogą być wykorzystywane do wcięć.

+1

To jest bardzo dobra odpowiedź !! Dzięki! Wciąż ma niewielki minus, że nie mogę łatwo (tj. Za pomocą przełącznika wiersza poleceń) wyłączyć tę funkcję. Zaznaczę to jako poprawną odpowiedź za kilka dni, chyba że ktoś wymyśli podobne rozwiązanie, które można włączyć/wyłączyć bezpośrednio w poleceniu 'git diff'. – Hinton

+1

Taki "wniosek" byłby "GNU" wcięcie, w mało prawdopodobnym przypadku, że ktoś nie słyszał o nim wcześniej ... – Hinton