Sollte eine Git-Commit-Nachricht die geänderte Datei erwähnen?


50

In der ersten Zeile einer Git-Commit-Nachricht habe ich die Angewohnheit, die Datei zu erwähnen, die geändert wurde, wenn sich eine Änderung nicht über mehrere Dateien erstreckt. Beispiel:

Add [somefunc] to [somefile] 

Ist das eine gute Sache oder ist es unnötig?

Antworten:


84

Tools zur Versionskontrolle sind leistungsstark genug, um der Person anzuzeigen, welche Dateien geändert und welche Methoden hinzugefügt wurden. Dies bedeutet, dass im Allgemeinen Protokollnachrichten, die bereits vorhandene Nachrichten eindeutig duplizieren, das Protokoll verschmutzen.

Sie haben eine somefuncMethode hinzugefügt , um eine Anforderung zu erfüllen, dh:

  • um ein Feature hinzuzufügen,
  • um einen Fehler zu entfernen oder
  • den Quellcode umgestalten.

Dies bedeutet, dass Ihre Protokollnachrichten vielmehr erläutern müssen, welche Funktionen / Fehler betroffen waren oder wozu das Refactoring diente.


5
Es sollte auch darüber sprechen, warum . Welche anderen Optionen haben Sie in Betracht gezogen und warum haben Sie diese ausgewählt?
Jay Bazuzi

2
Ich kommentiere Commits genauso wie Code, nur aus einer höheren Perspektive (dh weniger Informationen, mehr Zusammenfassung). Persönlich zerlege ich es auf eine Datei- / Modulebene (in Git), aber nur, weil Commits von vornherein billig sind und ich es mag, die Geschichte wie ein Buch lesen zu können. YMMV.
Evan Plaice

1
Wenn die Person aus irgendeinem Grund eine Reihe von Dateien auf einmal festschreibt, die nicht mit demselben Fehler zusammenhängen, ziehe ich es vor, die Dateinamen und die Fehler-ID vor dem Sommer aufzulisten. Ich muss nicht wissen, file.cpp: getMethod () hinzugefügt, aber ich möchte Fehler-ID # 10 file.cpp: anständige summery hier. Wenn sie eine Reihe von Dateien festschreiben, die über mehrere Fehlerberichte verteilt sind, werden wir uns allerdings unterhalten, weil mir das nicht wirklich gefällt. Ich würde es vorziehen, wenn sie mehrere Commits machen. Eine für jedes Problem, das sie lösen.
William

@ William: Falls es ein Problem mit einem Bugfix gibt, ist es auch möglich, es mit minimalem Aufwand wiederherzustellen. Kombinieren Sie zehn Fehlerkorrekturen in einem Commit, und das kann ein ernstes Problem sein.
David Thornley

59

Nein. Es gibt viele Möglichkeiten, den Inhalt eines Commits zu überprüfen . Der Kommentar sollte den Zweck des Commits beschreiben.


30

Vergessen Sie nicht, TICKET / AUSGABENUMMER hinzuzufügen .

Wenn Sie ein Feature- oder Issue-Tracking-System mit einer Ticket- oder Issue-Nummer haben , müssen Sie diese ID-Nummer in das Commit einfügen. Dies hilft jedem, der mehr über die Funktion oder das Problem wissen möchte, an dem Sie gearbeitet haben.

In meinem letzten Projekt gab es ein Makro, das entwickelt wurde, um sicherzustellen, dass die ersten 7 Stellen des Kommentars eine gültige Ausgabenummer von clear quest (unser System zur Verfolgung von Problemen / Funktionen) sind.


Wie führen Sie dann eine Umgestaltungsänderung durch?
Jules

@Jules Refactoring hat ein Ticket #, das nie fertig ist
Caleth

@Jules eine Methode ist, dass Refactoring als ein "lästiges" Problem nachverfolgt wird und daher auch eine Problemnummer hat.
Scott McIntyre

@ScottMcIntyre Auch wenn dies zutrifft, bin ich nicht davon überzeugt, dass es eine gute Idee ist. Refactoring wird häufig am besten opportunistisch oder im Rahmen der Entwicklung von Code durchgeführt, der auf dem Code basiert, der refactored werden soll. Wie Fowler es ausdrückt : "Geplantes Refactoring ist ein [...] Zeichen dafür, dass das Team mit den anderen Workflows nicht genug Refactoring durchgeführt hat". Oder unverblümt von Ron Jeffries: Refactoring - Nicht im Rückstand! .
Jules

3

Ich mache so etwas, wenn ich z. B. das Update für einen Fehler feststelle, bei dem Änderungen an mehreren Dateien erforderlich sind. Auf diese Weise können Sie leichter erkennen, was sich tatsächlich geändert hat, ohne einzelne Dateien im Änderungssatz zu betrachten.

Bei Änderungssätzen für einzelne Dateien ist dies nicht erforderlich.

Die erste Zeile ist immer eine allgemeine Beschreibung des Änderungssatzes, z. B. ein Link zum Fehler oder zur User Story.


3

Wenn es sich um relevante Informationen in der Beschreibung der Festschreibungsnachricht handelt, geben Sie diese an. Wenn die einzige Information der Dateiname selbst ist, dann nein.

Dies ist beispielsweise sinnvoll: "Die build_foo () - Funktion wurde von fooutil.c nach foobase.c verschoben, da die meisten Programme, die build_foo () verwenden möchten, foobase.c bereits enthalten."

Dies funktioniert nicht: "Build_foo () in fooutil.c wurde aktualisiert, um einen Balkenparameter zu übernehmen."


1

Ich möchte hier eine andere Perspektive hinzufügen.

Meine Antwort ist Ja oder Nein. Aber im Allgemeinen würde ich Ja sagen.

Die Versionskontrolle ist in der Tat leistungsfähig genug, um zu wissen, welche Datei aktualisiert wird. Aber wenn wir das tun

$ git log

Wir sehen nur die Commit-Nachricht. Das machen die meisten Leute.

Indem Sie in das Protokoll selbst schauen. Es wird ein zusätzlicher Kontext hinzugefügt. Zum Beispiel:

readme.md: Fix typo detected by language tool

Ist besser als

Fix typo detected by language tool

Wenn die Änderungen jedoch mehrere Dateien erzeugen, erwähnen Sie mindestens die Komponente, die bearbeitet wird.

API: Fix reset password not sent email to user

Durch das Lesen wissen wir, dass der behobene Fehler in der API-Komponente und wahrscheinlich im API-Verzeichnis in der Codebasis liegt.

Wir könnten es jedoch tun

$ git show COMMIT_ID --name-only 

aber es fügt mehr Schritt hinzu, nur um die Dateien zu erhalten.


0

Das einzige Mal, dass ich sehe, dass dies für das Einchecken einer einzelnen Datei nützlich ist, ist, wenn Sie Änderungen an einer Funktion vorgenommen haben, die an vielen Stellen in der Datei verwendet wird, so dass das Diff überladen ist. Sogar dann würde ich zuerst die Änderungsverfolgungsnummer und eine Klartextbeschreibung der Änderung einfügen.


-1

Ich denke, die eigentliche Frage hier ist, wie begrenzt der Umfang Ihrer Verpflichtungen ist. Wenn Sie darauf warten, eine Vielzahl von nicht zusammenhängenden Änderungen in einem Commit festzuschreiben, müssen Sie möglicherweise angeben, welche Dateien zu welchem ​​Zweck geändert wurden.

Wenn Sie jedoch einfach häufiger engere Festschreibungen vornehmen, wird durch eine einzelne Festschreibung erläutert, welche Dateien geändert wurden, und Sie können einfach beschreiben, wozu die Nachricht dient.

Immer häufiger. Auf diese Weise können Sie vermeiden, dass Ihre Nachrichten so ausführlich sind.


-2

Das sollte es nicht

Jeder, der interessiert ist, kann Veränderungen in einer Geschichte sehen

In größeren Systemen ist dies auch nicht möglich, da möglicherweise viele Dateien automatisch generiert werden

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.