Frage

Ich habe ein Perl-Skript verwendet, um alle Tab-Zeichen in einer PHP-git-Repository zu ändern und verändert sie alle vier Räume.

$ find -iname \*.php -exec perl -pi -e "s/\t/    /g" {} \

kann ich diese Änderung begehen mit git commit, aber es wird mich markieren, wie der Autor aller geänderten Zeilen innerhalb git blame danach begehen gemacht wird.

Gibt es eine Möglichkeit, diese massive Veränderung zu begehen, die mich nicht als Autor der geändertenen Zeilen nicht markieren, aber behält den ursprünglichen Autor? Das ist eine Menge Geschichte wollen wir nicht wirklich in unserem Projekt zu verlieren.

Unser Ziel Registerkarten mit 4 Leerzeichen zu ersetzen ist nicht um die Dinge anders erscheinen in git Schuld, aber richtige PEAR Coding-Standards zu folgen. Z.B. keine Registerkarten verwenden 4 Leerzeichen für Einrückungen.

War es hilfreich?

Lösung

Dank wnoise auf git: Änderung Styling (Leerzeichen) ohne Änderung Eigentum / Schuld? , kam ich mit diesem auf einen beliebigen Filter auf git Geschichte zu laufen, also mit diesem Sie der Geschichte neu schreiben könnten, um es wie säumigen Leerzeichen oder andere Probleme aussehen wurden nie begangen, in Takt die ursprünglichen Autoren verlassen aber Ihr Code aufgeräumt: git filter-branch --tree-filter 'git diff-tree --name-only --diff-filter=AM -r --no-commit-id $GIT_COMMIT | php cleanup.php' HEAD

Andere Tipps

Es ist nicht die Verantwortung der commit Befehl, zu entscheiden, wie sie zu behandeln Whitespaces, aber die Verantwortung der Schuld Befehl, weil es Schuld , die die Unterschiede zwischen den Versionen analysiert den Autor jeder Zeile zu erhalten. So Suche nach einer Option zu ignorieren Leerzeichen in Schuld :

Die Option -w wie folgt definiert ist: „Ignorieren Leerzeichen bei einem Vergleich der Version der Eltern und das Kind zu finden ist, wo die Linien herkam.“ http://kernel.org/pub/software/scm/git /docs/git-blame.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top