.git-blame-ignore-revs ist eine Git-Funktion, die in Version 2.23 eingeführt wurde und es Ihnen ermöglicht, bestimmte Commits in Git-Blamme-Ergebnissen zu ignorieren. Dies ist besonders nützlich für Massen-Commits, die eine große Anzahl von Zeilen ändern, ohne die eigentliche Funktionalität des Codes zu verändern, wie z. B. Formatierungsänderungen, Umbenennungen oder die Anwendung von Codierungsstandards in einer Codebasis. Durch das Ignorieren dieser nichtfunktionalen Änderungen kann sich Git Blame auf sinnvolle Änderungen konzentrieren, die den Kontext und die Argumentation hinter dem Code erklären.
Wenn Sie Git Blame für eine Datei verwenden, wird Ihnen angezeigt, welcher Commit zuletzt jede Zeile der Datei geändert hat, zusammen mit dem Autor und dem Zeitstempel. Dies ist nützlich, um herauszufinden, warum eine bestimmte Zeile geändert wurde. Wenn jedoch ein großer Commit, der reine Formatierungsänderungen vornimmt, wie z. B. das Anwenden von „Prettier“, Teil des Verlaufs ist, kann Git Blame für viele Zeilen auf diesen Commit verweisen. Dies macht es schwierig, den tatsächlichen funktionalen Änderungsverlauf zu finden.
Wenn Ihr Team beispielsweise ein Tool wie Prettier oder ESLint verwendet, um die gesamte Codebasis neu zu formatieren, kann der resultierende Commit Tausende von Codezeilen betreffen. Ohne .git-blame-ignore-revs würde Git Blame diesen Commit als für jede betroffene Zeile verantwortlich anzeigen, was den aussagekräftigeren Verlauf hinter jeder Zeile verschleiern könnte.
Durch die Verwendung von .git-blame-ignore-revs können Sie Git Blame anweisen, diese Commits zu überspringen und sich auf die Änderungen zu konzentrieren, die wichtig sind.
Um zu verstehen, wie diese Funktion verwendet wird, gehen wir ein Beispiel aus dem React-Repository durch.
Der React-Quellcode enthält Massen-Commits, bei denen Tools wie Prettier im gesamten Projekt ausgeführt wurden. Hier sind zwei solcher Commits:
2. Commit: fd2b3e1
Nachricht: Compiler: Entfork Prettier Config
Dieses Commit enthält weitere Aktualisierungen der Prettier-Konfiguration, die sich auf alle .ts- und .tsx-Dateien im Repository auswirken.
Diese Commits befassen sich nur mit der Formatierung und liefern keinen aussagekräftigen Kontext, wenn untersucht wird, warum eine Codezeile so geschrieben wurde, wie sie war.
Damit Git Blame diese Massenformatierungs-Commits ignoriert, können wir eine .git-blame-ignore-revs-Datei im Stammverzeichnis des Repositorys erstellen.
touch .git-blame-ignore-revs
2. Fügen Sie der Datei die relevanten Commit-Hashes hinzu und erklären Sie, warum jedes Commit ignoriert wird. In diesem Fall fügen wir die beiden zuvor identifizierten Commits hinzu:
# Prettier formatting changes c998bb1ed4b3285398c9c7797135d3f060243c6a fd2b3e13d330a4559f5aa21462e1cb2cbbcf144b
3. Speichern Sie die Datei .git-blame-ignore-revs im Repository. Diese Datei kann zusammen mit Ihrem Code versioniert werden, sodass das gesamte Team dieselbe Liste ignorierter Commits verwenden kann.
Um zu vermeiden, dass Sie bei jeder Verwendung von Git Blame die Option --ignore-revs-file eingeben müssen, können Sie Git so konfigurieren, dass die Datei .git-blame-ignore-revs automatisch verwendet wird.
git config blame.ignoreRevsFile .git-blame-ignore-revs
Dadurch wird sichergestellt, dass jedes Mal, wenn jemand Git Blame in diesem Repository ausführt, Git automatisch die in .git-blame-ignore-revs aufgeführten Commits ignoriert.
Mal sehen, wie das in der Praxis funktioniert. Ohne die Massenformatierungs-Commits zu ignorieren, könnte Git Blame Folgendes anzeigen:
$ git blame src/someFile.tsx c998bb1e (Joe Bloggs 2023-03-15 10:00:00 +0200 1) import React from 'react'; fd2b3e13 (Alan 2023-04-01 14:15:30 +0200 2) function App() { c998bb1e (Joe Bloggs 2023-03-15 10:00:00 +0200 3) return <div>Hello, world!</div>; fd2b3e13 (Ben 2023-04-01 14:15:30 +0200 4) }
Diese Ausgabe zeigt an, dass die letzte Änderung an den Zeilen 1 und 3 auf den Prettier-Formatierungs-Commit (c998bb1e) zurückzuführen war und die Zeilen 2 und 4 in einem anderen Massen-Commit (fd2b3e13) geändert wurden. Da es sich um Formatierungsänderungen handelt, ist dies nicht hilfreich für das Verständnis, wer die eigentliche Logik hinter diesen Zeilen eingeführt hat.
Nach der Konfiguration von .git-blame-ignore-revs werden beim Ausführen von git Blame die Massen-Commits übersprungen und der tatsächliche Verlauf angezeigt:
$ git blame src/someFile.tsx a23d9b34 (May 2022-12-01 09:30:00 +0200 1) import React from 'react'; b12e45a6 (JJ 2022-12-05 11:45:15 +0200 2) function App() { a23d9b34 (Joe 2022-12-01 09:30:00 +0200 3) return <div>Hello, world!</div>; b12e45a6 (Ram 2022-12-05 11:45:15 +0200 4) }
Jetzt ordnet Git Blame die Zeilen den richtigen Commits zu und ignoriert dabei die unwichtigen Formatierungsänderungen. Dadurch erhalten wir nützliche Informationen, die zeigen, wer die tatsächlichen Funktionsänderungen vorgenommen hat.
Die .git-blame-ignore-revs-Funktion in Git 2.23 ist ein Game-Changer für Projekte mit Massenformatierung oder Stiländerungen. Durch das Einrichten einer .git-blame-ignore-revs-Datei und die Konfiguration Ihres Repositorys können Sie Codierungsstandards anwenden, Tools wie Prettier ausführen oder Code umgestalten, ohne sich Sorgen machen zu müssen, dass der Schuldverschreibungsverlauf verunreinigt wird.
Mit diesem Ansatz kann Ihr Team die Qualität und Formatierung des Codes sicher verbessern, ohne dabei auf die Fähigkeit verzichten zu müssen, sinnvolle Änderungen zu verfolgen. So wird sichergestellt, dass Git Blame ein wertvolles Werkzeug bleibt, um den Verlauf und die Argumentation hinter jeder Codezeile zu verstehen.
Bei Think Throo haben wir die Mission, die fortgeschrittenen Codebasis-Architekturkonzepte zu vermitteln, die in Open-Source-Projekten verwendet werden.
Verzehnfachen Sie Ihre Programmierkenntnisse, indem Sie fortgeschrittene Architekturkonzepte in Next.js/React üben, die Best Practices erlernen und Projekte in Produktionsqualität erstellen.
Wir sind Open Source – https://github.com/thinkthroo/thinkthroo (Geben Sie uns einen Stern!)
Verbessern Sie die Fähigkeiten Ihres Teams mit unseren Fortgeschrittenenkursen basierend auf der Codebasis-Architektur. Kontaktieren Sie uns unter hello@thinkthroo.com, um mehr zu erfahren!
https://github.com/facebook/react/blob/main/.git-blame-ignore-revs
https://gist.github.com/kateinoigakukun/b0bc920e587851bfffa98b9e279175f2
https://github.com/facebook/react/commit/c998bb1ed4b3285398c9c7797135d3f060243c6a
https://moxio.com/blog/ignoring-bulk-change-commits-with-git-blame/
Das obige ist der detaillierte Inhalt von„.git-blame-ignore-revs', um Massenformatierungsänderungen zu ignorieren.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!