2014-06-26 4 views
8

Ich möchte alle meine Whitespace-Korrekturen in ihrem eigenen Commit festschreiben, um alles andere rein von Leerzeichen Änderungen zu halten.Gibt es eine Möglichkeit, * nur * Leerzeichen Unterschiede mit git diff zu zeigen?

Es ist einfach aus Leerzeichen Unterschiede filtern mit git diff etwas mit wie dieses

git diff --ignore-all-space --ignore-space-change --ignore-space-at-eol --ignore-blank-lines 

aber wie bekomme ich eine Liste von nur Leerzeichen Unterschiede?

(Es wäre auch sinnvoll sein, eine Liste von Dateien zu erhalten, die nur Leerzeichen Unterschiede, so kann ich add sie nur alle ohne mit git add -p durch sie zu gehen, um die Unterschiede bei Leer auszusuchen. Aber ich nehme an, dass sekundäre ist.

)
+1

'diff -u <(git diff --stat --ignore-all-Raum --ignore-Raum-Änderung --ignore-Raum-at-EOL --ignore-blank-Linien) <(git diff --stat) 'vielleicht für deine zweite Frage? – Ryan

Antwort

3

Hier ist eine Art und Weise Sie es tun könnte:

  • beginnen Sie mit einem sauberen Arbeitsverzeichnis (zB git reset --hard)
  • Verwenden Whitespace Total Fixer zu reinigen up alle Leerzeichen Fehler. Es gibt Optionen, verschiedene Probleme zu beheben oder zu ignorieren, aber der Standard kann in Ordnung sein:

    find . -name "*.whatever_extension_you_need" -exec wtf.py -v -i {} \; 
    
  • git diff jetzt zeigen nur die Leerzeichen

  • Bühne ändert und die nur aus Leerzeichen Änderungen.

(FWIW, schrieb ich wtf.py; Es tut mir leid, wenn es wie schamlose Eigenwerbung scheint, aber ich habe es schreiben speziell für Situationen wie diese, wo ein Repository wiederholt mit Leerzeichen Probleme, die verharzen kontaminiert wird Ihre verpflichtet)

Sie auch wtf.py einfach Check für Leerzeichen Fehler nicht an Ort und Stelle Fixierung von ihnen verwenden können. Dies hat keine Auswirkungen auf Ihre Dateien, aber es wird eine (hoffentlich hilfreiche) Nachricht an stderr über die gefundenen Probleme ausgeben.

> find . -name "*.whatever_extension_you_need" -exec wtf.py -v {} \; > /dev/null 

nightmare.txt LINE 8: WARNING: spaces followed by tabs in whitespace at beginning of line 
nightmare.txt: 
    CHOPPED 1 lines with trailing space 
    CHOPPED 0 blank lines at EOF 
    ADDED newline at EOF 
    CHANGED 1 line endings which didn't match crlf from first line 
    WARNED ABOUT 1 lines with tabs/spaces mix 
+2

Nichts ist falsch mit schamloser Eigenwerbung meiner Meinung nach! Danke für das Schreiben und danke für die Antwort. Ich werde es testen, wenn ich eine Chance bekomme. – iconoclast

+0

Toll, Bug-Berichte/Vorschläge willkommen :) –

+1

besten Ursprungsgeschichte EVER :) – cxw

Verwandte Themen