Ich habe gerade die git-blame Seite des Handbuchs noch einmal und bemerkte diesen Teil:
Eine besonders nützliche Methode ist es, zu sehen, ob eine hinzugefügte Datei Zeilen enthält, die durch Kopieren und Einfügen aus bestehenden Dateien erstellt wurden. Manchmal deutet dies darauf hin, dass der Entwickler schlampig gearbeitet und den Code nicht richtig refaktorisiert hat. Sie können zunächst den Commit finden, mit dem die Datei eingeführt wurde:
git log --diff-filter=A --pretty=short -- foo
und vermerken dann die Änderung zwischen dem Commit und seinen Eltern, wobei die commit^!-Notation verwendet wird:
git blame -C -C -f $commit^! -- foo
Das klingt recht interessant, aber ich verstehe nicht ganz, wie es funktioniert und warum. Ich frage mich, ob es in einem Git-Hook verwendet werden kann, um kopierten und eingefügten Code zu erkennen.
Kann ein Git-Experte vielleicht die Auswirkungen der Verwendung der oben genannten Git-Befehle zusammen erklären, und ob es möglich ist, so etwas zu verwenden, damit Git anzeigt, ob es Code-Duplikationen gibt (vielleicht durch Verwendung des "Ähnlichkeitsindex", den Git beim Umbenennen von Dateien zu berechnen scheint)?