„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > „.git-blame-ignore-revs“, um Massenformatierungsänderungen zu ignorieren.

„.git-blame-ignore-revs“, um Massenformatierungsänderungen zu ignorieren.

Veröffentlicht am 03.11.2024
Durchsuche:773

.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.

Warum .git-blame-ignore-revs ist wichtig

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 wichtigen Änderungen zu konzentrieren.

So verwenden Sie .git-blame-ignore-revs

Um zu verstehen, wie diese Funktion verwendet wird, gehen wir ein Beispiel aus dem React-Repository durch.

Schritt 1: Identifizieren Sie die Massenformatierungs-Commits

Der React-Quellcode enthält Massen-Commits, bei denen Tools wie Prettier im gesamten Projekt ausgeführt wurden. Hier sind zwei solcher Commits:

`.git-blame-ignore-revs` to ignore bulk formatting changes.

  1. Commit: c998bb1 Nachricht: [compiler] Prettier ausführen, Snap reparieren Dieser Commit wendet die Prettier-Formatierung auf die gesamte Codebasis an und ändert viele Zeilen, ohne die Funktionalität zu ändern.

`.git-blame-ignore-revs` to ignore bulk formatting changes.

2. Commit: fd2b3e1

Nachricht: Compiler: Entfork schönere Konfiguration

Dieses Commit enthält weitere Aktualisierungen der Prettier-Konfiguration, die sich auf alle .ts- und .tsx-Dateien im Repository auswirken.

`.git-blame-ignore-revs` to ignore bulk formatting changes.

Diese Commits befassen sich nur mit der Formatierung und liefern keinen sinnvollen Kontext, wenn untersucht wird, warum eine Codezeile so geschrieben wurde, wie sie war.

Schritt 2: Erstellen Sie die .git-blame-ignore-revs-Datei

Damit Git Blame diese Massenformatierungs-Commits ignoriert, können wir eine .git-blame-ignore-revs-Datei im Stammverzeichnis des Repositorys erstellen.

  1. Erstellen Sie die .git-blame-ignore-revs-Datei:
touch .git-blame-ignore-revs

2. Fügen Sie der Datei die relevanten Commit-Hashes hinzu und erläutern 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.

Schritt 3: Git für die Verwendung konfigurieren .git-blame-ignore-revs

Um zu vermeiden, dass Sie die Option --ignore-revs-file jedes Mal eingeben müssen, wenn Sie Git Blame verwenden, können Sie Git so konfigurieren, dass es automatisch die Datei .git-blame-ignore-revs verwendet.

  1. Richten Sie die Konfiguration auf Repository-Ebene ein:
git config blame.ignoreRevsFile .git-blame-ignore-revs

Dadurch wird sichergestellt, dass jedes Mal, wenn jemand Git Blame in diesem Repository ausführt, Git die in .git-blame-ignore-revs aufgeführten Commits automatisch ignoriert.

Schritt 4: Führen Sie Git Blame mit den ignorierten Commits aus

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 
Hello, world!
; 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 
Hello, world!
; 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.

Abschluss

Die Funktion .git-blame-ignore-revs 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 Gedanken über die Verschmutzung des Blame-Verlaufs machen zu müssen.

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 stellen Sie sicher, dass Git Blame ein wertvolles Werkzeug bleibt, um den Verlauf und die Argumentation hinter jeder Codezeile zu verstehen.

Über uns:

Bei Think Throo haben wir es uns zur Aufgabe gemacht, 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, lernen Sie die Best Practices kennen und erstellen Sie Projekte in Produktionsqualität.

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 [email protected], um mehr zu erfahren!

Referenzen:

  1. https://github.com/facebook/react/blob/main/.git-blame-ignore-revs

  2. https://gist.github.com/kateinoigakukun/b0bc920e587851bfffa98b9e279175f2

  3. https://github.com/facebook/react/commit/c998bb1ed4b3285398c9c7797135d3f060243c6a

  4. https://moxio.com/blog/ignoring-bulk-change-commits-with-git-blame/



Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/thinkthroo/git-blame-ignore-revs-to-ignore-bulk-formatting-changes-5fee?1 Bei Verstößen wenden Sie sich bitte an [email protected] um es zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3