Können Sie eine gute Vorlage für Commit-Nachrichten / Richtlinien empfehlen, die im Unternehmen durchgesetzt werden sollen? [geschlossen]


38

In Git ist es möglich, eine gute Festschreibungsvorlage festzulegen und durchzusetzen.

Können Sie (vorzugsweise mit Argumentation) eine gute Vorlage / Richtlinien für das Festschreiben empfehlen, die im Unternehmen durchgesetzt werden soll?

Antworten:


42

ich benutze

[Abc]: Message.

Mit Add, Mod (ify), Ref (actoring), Fix, Rem (ove) und Rea (dability) ist es einfach, Logfiles zu extrahieren.

Beispiel

Add: New function to rule the world.  
Mod: Add women factor in Domination.ruleTheWorld().  
Ref: Extract empathy stuff to an abstract class.  
Fix: RUL-42 or #42 Starvation need to be initialised before Energy to avoid the nullpointer in People.  
Rem: freeSpeech is not used anymore.  
Rea: Removed old TODO and extra space in header.  

Wenn ich mehr als eine Zeile habe, sortiere ich sie mit dem Wichtigsten zuerst.


1
+1 Das ist eine nette Art, damit umzugehen, und Sie können leicht nach Änderungen suchen.
Sardathrion - Wiedereinsetzung von Monica

12
EEk! Sie nahmen Redefreiheit weg!
CaffGeek

1
Könnten Sie bitte einen Unterschied zwischen Modund erklären Ref? Manchmal mache ich nur kleine Korrekturen, was eine Art Refactoring ist.
Yegle

2
Bei @yegle Modgeht es darum, etwas hinzuzufügen oder ein Verhalten Refzu ändern, interne Dinge zu ändern , die keine Funktionalität, API usw. hinzufügen. Beispiel: Wenn ich eine add(Object)Funktion habe und eine add(List<Object>)Funktion implementiere , kommentiere ich mit Mod. Später entferne ich die Vervielfältigung und verwende sie direkt add(Object)in der von add(List<Object>)mir verwendeten Form Ref.
Rangzen

14

Wir verwenden folgendes:

[Ticket-ID in JIRA]: [Meldung: Was wurde getan?] Zum Beispiel - ABC-123: Möglichkeit hinzugefügt, die Präsentation pro Region zu konfigurieren.

In diesem Fall können Sie bei ordnungsgemäßer Integration geänderte / gelöschte / hinzugefügte Dateien in Ihren Issue-Tracker übernehmen. Beachten Sie jedoch, dass Sie so etwas wie ABC-123: Done oder ABC-123: Fixed mit Filtern nach Möglichkeit verhindern sollten.


+1 für Bugfixes, aber was ist mit neuen Funktionen? Es sei denn, alle neuen Funktionen wurden auch in JIRA erstellt ...
Sardathrion - Reinstate Monica

3
@Sardathrion - Persönlich würde ich Tracker für die neuen Funktionen in JIRA erstellen. Wir machen das mit Bugzilla und es gibt dem Testteam (und allen anderen) eine gute Sicht auf alles, was in eine Veröffentlichung gesteckt wird, und minimiert die Probleme, die auftreten, wenn sie nicht getestet / Code überprüft / was auch immer wurden.
Jon Hopkins

@ JonHopkins: Während ein Bug-Tracker für neue Funktionen verwendet werden kann, ist er möglicherweise nicht das ideale Werkzeug. Natürlich wird Ihr Kilometerstand variieren ^ _ ~
Sardathrion - Reinstate Monica

3
Ich habe es geliebt , jedem Commit ein Ticket zuzuweisen (einige Tickets können natürlich leicht mehrere Commits haben): Dies ist eine sehr einfache Möglichkeit, mehr Hintergrundinformationen zu erhalten, wenn Sie den Code später überprüfen. "Warum haben sie das getan ?" ist viel einfacher zu beantworten, wenn Sie den Festschreibungskommentar und einen Problemverfolgungseintrag haben.
Joachim Sauer

Ist es nicht besser, ein Ticket in einer separaten Filiale zu machen?
Tamás Szelei

11

Es gibt eine einfache Regel, die eine Konvention ist, die von vielen (wenn nicht allen) SCMs und von den meisten Tools befolgt wird, die mit SCMs arbeiten:

Die erste Zeile einer Festschreibungsnachricht ist eine kurze Zusammenfassung, während der Rest der Nachricht die Details enthält.

Daher zeigen die meisten Tools nur die erste Zeile und die gesamte Nachricht bei Bedarf an.

Ein typischer Missbrauch einer Festschreibungsmeldung ist eine Aufzählung der Änderungen (nur der erste Aufzählungspunkt wird angezeigt). Ein weiterer Missbrauch besteht darin, eine zu lange detaillierte Nachricht in eine einzige Zeile zu schreiben.

Wenn es also eine Sache gibt, die erzwungen werden muss, würde ich sagen, dass es die maximale Länge der ersten Zeile ist.


Ich habe noch nie einen Grund gesehen, eine ausführliche Commit-Nachricht in Git zu schreiben. Detaillierte Informationen finden Sie im Issue-Tracker. Daher sind meine Commit-Nachrichten nur eine einsatzige Beschreibung der (kleinen) Änderung, die ich an diesem Commit vorgenommen habe.
Marnen Laibow-Koser

9

Persönlich habe ich noch nie eine allgemeine Commit-Vorlage gesehen, die es wert ist, verwendet zu werden. In dem Kommentar sollte genau angegeben werden, mit welchen Commits es zu tun hat, z. B. welche Funktion / Fehlerbehebung oder eine kurze Erklärung, warum Änderungen vorgenommen wurden.

Informationen darüber, was zugesagt wurde, sollten nicht enthalten sein, dies kann vom scm-System bestimmt werden. Weitere Informationen zu Fehlern und Funktionen finden Sie dort, wo Fehler und Funktionen nachverfolgt werden.

Wenn ich einen Fehlerbericht nach einem Commit aktualisiere, finde ich es gut, die Commit-Revision zusammen mit den Kommentaren im Fehlerbericht anzugeben. Auf diese Weise finden Sie den Weg vom Festschreibungskommentar zum Fehlerbericht, und für jeden Kommentar im Fehlerbericht können Sie feststellen, was festgeschrieben wurde. Sie duplizieren jedoch keine Informationen, indem Sie diese sowohl im Fehlerbericht als auch in der Festschreibungsmeldung angeben.

Wenn Sie dann den Verlauf von Revisionen für eine Datei anzeigen, erhalten Sie eine kurze Beschreibung des Verlaufs. Sie wissen jedoch auch, wo Sie nach weiteren Details suchen müssen, um Fehlerberichte oder Aufgabenbeschreibungen zu erhalten.


4
Mit vielen Bug-Tools können Sie direkt auf die Revision in Ihrem SCM-Tool verweisen, wenn Sie die Details im richtigen Format eingeben. In ähnlicher Weise werden viele SCM-Tools direkt mit der Fehlerdatenbank verknüpft, wenn Sie die Fehlerdetails im richtigen Format eingeben. IMO, solange du das tust, bist du golden.
Dean Harding

4

In Git ist es möglich, fast alles mit Git-Hooks zu erzwingen . Überprüfen Sie die Beispiele in .git / hooks auf Ideen.

In Bezug auf die Nachricht möchten Sie in einem sehr allgemeinen Fall genügend Informationen über das von Ihnen gelöste Problem UND die Lösung selbst einfügen, um dieses Commit später finden und identifizieren zu können. In den meisten Fällen wird dem Problem eine Fehlernummer zugeordnet (bei ordnungsgemäßer Integration in Ihr Fehlerverfolgungssystem). Wenn Sie über andere Systeme verfügen, in die Ihr Prozess integriert ist (z. B. das Code Review Tracking-System), geben Sie auch die entsprechenden Bits an:

Extracted checking foobar range from bar() into foo(min, max) to re-use
in yadda() and blah(). foo() returns true if foobar is in the
specified range and false otherwise.

BugID: 123456
ReviewedBy: mabuddy
AutomergeTo: none

ABER du willst es einfach halten. Andernfalls finden die Benutzer eine Möglichkeit, das System zu betrügen und unbrauchbare Commit-Nachrichten zu erstellen.


0

Wir verwenden eine Vorlage mit

  • Die ID-Nummer des Fehlers / der Funktion / des Fixes
  • Ein Ja / Nein, das angibt, ob der Code getestet wurde oder nicht
  • Und ein Detailabschnitt für eine kurze Beschreibung der Absicht des Commits

Die ersten beiden werden jedoch die meiste Zeit weggelassen (gelegentlich alle drei), so dass es nicht wirklich eine große Sache ist.


0

Ich habe in der Regel die Kennung, die sich in dem von mir verwendeten Ticket-Tracking-System befindet, oder eine übergeordnete Übersicht als erste Zeile. Dann habe ich Punkt "Aufzählungszeichen" der spezifischen Änderung im Festschreiben. So könnte ich von etwas wie:

MyVideoGameProject-123 OR Inventory System Improvements
Made inventory GUI drap and drap
Added ability to have multiple bag slots to expand inventory capacity

Dies ist das sauberste Commit-Format, das ich mag. Es ist direkt und auf den Punkt. Ein weiterer Grund, warum ich das so mache, ist, dass ich, wenn ich ein Änderungsprotokoll erstellen möchte, einfach alle Commit-Meldungen in ein Änderungsprotokoll schreiben kann.


0

[ticketId] [ABC] [topicId] [WIP] Nachricht, wobei:

  • ticketId - ID eines Elements im Task-Repository
  • ABC - Add (Feature), Fix (Bugfix), Str (Struktur), Dep (Abhängigkeit) Rem (Inkompatibilität abwärts / Remove), Rea (Lesbarkeit), Ref (Refactoring)
  • topicId - kann ein Job-Selektor für jenkins und / oder Branchennamen und / oder Topic-Namen für gerrit sein
  • WIP - in Arbeit / oder nicht (dh die kontinuierliche Integration kann dies erfordern)
  • message - Detail der Änderung

Beispiele:
[# 452567] [hinzufügen] [menu_item] neues Element - Gästebuch
[# 452363] [fix] [banner_top] [WIP] 1024x300 kann jetzt verwendet werden
[# 452363] [fix] [banner_top] 500x200 kann jetzt verwendet werden
[ # 452713] [rem] [Seite] linke mittlere Anzeige


Ihre Antwort wäre klarer, wenn Sie erklären würden, warum Sie dies für ein so gutes Format halten. Während der Wert dieses Formats für Sie selbstverständlich sein mag, ist er für andere nicht so offensichtlich.

danke für den kommentar - ja ich werde es gleich näher erläutern - ich wollte nur mit
fakten

Für 'Work In Progress' - ist dies eine Notiz für Sie, die Sie zurückkommen und ändern werden, oder verpflichten Sie sich, dies zu meistern? Wenn ja warum?
JBRWilkinson

CI - Workflow kann es erfordern - so dass Sie drücken Sie einfach unfertig Änderung zu meistern es so schnell wie möglich zu integrieren
laplasz
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.