Ist es möglich, git grep
zu erhalten, um nur neue oder geänderte Dateien im Index / Cache zu suchen?
(Der Anwendungsfall dafür ist die Verwendung in einem Pre-Commit-Hook, der im prospektiven Commit nach "debug" -Code wie console.log
sucht. Aber ich bin nicht gestört von console.log
in "existend" Code. Vorzugsweise würde dies auch nicht mit Instanzen von console.log
übereinstimmen, die entfernt sind, aber ich kann mit diesen übereinstimmen!)
Es stellt sich heraus, dass dies nicht über git grep
geschieht, sondern durch einen völlig anderen Befehl, der zufällig auch folgendes finden kann: git diff-index
. (Ein weiterer Triumph für Einfachheit und Orthogonalität ...)
Was ich wollte, kann erreicht werden über:
%Vor% Sie können einen git pre-commit-Hook erstellen (es ist nur ein Shell-Skript, das als ausführbare Datei in Ihrem .git / hooks-Verzeichnis markiert ist), das Ihre Commit-Diff für neu hinzugefügte Zeilen scannt (die mit +
symbol at) der Anfang für dein "debug" -Muster), und ein exit 1
, wenn es solche Zeilen gefunden hat.
Dies weist git commit
an, das Commit abzubrechen, bevor Sie Ihren $ EDITOR zum Editieren der Commit-Nachricht starten.
Ich habe ein Perl-Programm namens dirty
, das neue oder geänderte Dateien in einem Repo erkennt, und dann kann ich einfach grep string_to_find $(dirty)
sagen.
Beachten Sie, dass es schlau genug ist, in einem Subversion-Repo oder einem Git-Repo nach schmutzigen Dateien zu suchen, je nachdem, welche es erkennt.