Git commit che non sovrascrive gli autori originali in git bias

Ho usato uno script perl per modificare tutti i caratteri di tabulazione in un repository php git e li ho cambiati tutti in 4 spazi.

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

Posso commettere questo cambiamento con git commit , ma mi segnerà come autore di tutte le linee modificate all’interno di git blame dopo questo commit.

C’è un modo per commettere questo enorme cambiamento che non mi contraddistingue come autore delle linee modificate, ma conserva l’autore originale? Questa è una lunga storia che non vogliamo davvero perdere nel nostro progetto.

Il nostro scopo nel sostituire le tabs con 4 spazi non è quello di far apparire le cose diverse in git bame, ma di seguire gli standard di codifica PEAR corretti. Per esempio nessuna tabulazione, usa 4 spazi per il rientro.

Grazie a wnoise su git: cambia stile (spazio bianco) senza cambiare proprietà / colpa? , Mi è venuto in mente questo per eseguire un filtro arbitrario sulla cronologia git, quindi usando questo potresti riscrivere la cronologia per far sembrare che offendessi spazi bianchi o altri problemi non siano mai stati commessi, lasciando intatti gli autori originali ma il tuo codice ripulito: git filter-branch --tree-filter 'git diff-tree --name-only --diff-filter=AM -r --no-commit-id $GIT_COMMIT | php cleanup.php' HEAD git filter-branch --tree-filter 'git diff-tree --name-only --diff-filter=AM -r --no-commit-id $GIT_COMMIT | php cleanup.php' HEAD

Non è responsabilità del comando commit decidere come trattare gli spazi bianchi, ma la responsabilità del comando della colpa perché è la colpa che analizza le differenze tra le versioni per ottenere l’autore di ogni riga. Quindi, alla ricerca di un’opzione per ignorare gli spazi bianchi in colpa :

L’opzione -w è definita come: “Ignora gli spazi bianchi quando si confrontano la versione del genitore e quella del minore per trovare da dove provengono le linee”. http://kernel.org/pub/software/scm/git/docs/git-blame.html