it-swarm-eu.dev

Wie oft sollte ich / machen Sie Commits?

Ich bin ein neuer (seit gestern) College-Absolvent - BS in Informatik. Ich bin ein großer Fan der Versionskontrolle, seit ich sauer auf einen Auftrag wurde, an dem ich gearbeitet habe, und gerade von vorne angefangen habe, um ein paar Stunden wirklich guter Arbeit auszulöschen. Hoppla!

Seitdem habe ich Bazaar und Git (und SVN, als ich für einen Software Engineering-Kurs benötigt wurde) verwendet, obwohl hauptsächlich Git, um die Versionskontrolle für alle meine Projekte durchzuführen. Normalerweise bin ich ziemlich treu, wie oft ich ein Commit mache, aber gelegentlich gehe ich eine Weile (mehrere Funktionen usw.), bevor ich ein neues Commit schreibe.

Meine Frage an Sie lautet also: Wie oft sollten Sie Verpflichtungen eingehen? Ich bin sicher, es gibt keine feste Regel, aber welcher Richtlinie folgen Sie?

73
Wayne Werner

Immer wenn ich etwas habe, das funktioniert (was bedeutet, dass es für niemanden etwas kaputt macht), werde ich einchecken. Ich schreibe die meisten meiner Sachen zuerst, das heißt, jedes Mal, wenn ich einen neuen Test habe, der bestanden wird, checke ich ein.

In der Praxis bedeutet das einige Male pro Stunde. Mindestens ein paar Mal pro Stunde, wobei 5 ziemlich viel ist.

68
Julio

Sie sollten sich nicht auf Zeitbasis, sondern auf Funktionsbasis festlegen. Wenn Sie eine neue Funktion hinzufügen, die es wert ist, festgeschrieben zu werden, legen Sie fest. Sie haben eine Arbeitsmethode hinzugefügt? Verpflichten. Sie haben einen Tippfehler behoben? Verpflichten. Sie haben eine falsche Einrückung der Datei behoben? Verpflichten. Es ist nichts Falsches daran, kleine Änderungen festzuschreiben, sobald das Festschreiben relevant ist.

Was falsch ist, ist eine große Anzahl von Änderungen ohne Beziehungen untereinander. Es macht es sehr schwierig, die Commit-Quelle einer bestimmten Regression zu ermitteln.

Manchmal mache ich zwanzig Commits in einer Stunde und manchmal mache ich einmal am Tag Commits, abhängig von der Menge des Codes, der geändert wurde.

Wenn Sie kleine Commits erstellen, können Sie sehr leistungsfähige Tools wie git-bisect verwenden.

Vergessen Sie nicht die Regel Nr. 1 des Commiters: Brechen Sie niemals den Kofferraum. Wenn Sie mehrere Commits ausführen müssen, die den Trunk wahrscheinlich beschädigen, erstellen Sie stattdessen einen Zweig.

65
Thibault J

Es hängt ein wenig von der Entwicklungsumgebung ab.

Wenn Sie der einzige sind, der zu einer Codebasis beiträgt, ist ein verzögertes Festschreiben nicht so wichtig. Wenn Sie jedoch in einem Team von mehreren Entwicklern sind und alle denken: "Na ja, ich werde ein wenig mit dem Commit warten", werden Sie häufig mit vielen Konflikten fertig und verlieren viel Zeit.

Die allgemeine Regel (für beide Szenarien) lautet: Commit so oft wie möglich. Wenn Sie der Meinung sind, dass "es noch nicht fertig ist" (weil es den Build unterbricht oder einfach noch nicht fertig ist), erstellen Sie einen Zweig und legen Sie einen Commit für diesen Zweig fest. Stellen Sie jedoch sicher, dass Sie einen Commit durchführen.

10
perdian

Mindestens einmal am Tag, normalerweise drei oder vier, da ich mich immer dann verpflichte, wenn ich eine Pause mache. Ich arbeite alleine, damit ich mir keine Sorgen machen muss, jemand anderen durcheinander zu bringen, und ich kann eine Datei jederzeit zurücksetzen, wenn ich denke, dass ich den falschen Weg eingeschlagen habe.

Ich hatte einmal eine schlechte Erfahrung, als ich nicht regelmäßig Commits machte und meine Festplatte abstürzte und ich ein paar Stunden Arbeit verlor. Da sich mein Repository auf einem anderen Computer befindet und regelmäßig gesichert wird, gibt es keinen Grund, warum ich etwas hätte verlieren sollen.

7
vjones

Dank Git-Filialen und ihrer einfachen Verwaltung verpflichte ich mich sehr oft. Ich würde sagen, wann immer Sie etwas hinzufügen, das Sie für wichtig halten und das später zu etwas führen könnte, sollten Sie sich verpflichten.

Außerdem mache ich häufig einige Umgestaltungen und füge vor dem neuen Code neue Tests hinzu. In diesem Fall verpflichte ich mich für jedes Mal, wenn ich den Test ausführe, zu beobachten, wie er fehlschlägt, ihn erneut zu bestehen und umzugestalten.

Auch nach jeder Fehlerbehebung, egal wie klein oder unbedeutend sie auch sein mag.

Manchmal gehe ich auch den Weg "Festschreiben, sobald es kompiliert ist".

6
Edgar Gonzalez

Bei DVCS verpflichte ich mich grundsätzlich immer dann, wenn ich mit einer Änderung beginne, die wirklich ärgerlich wäre, wenn ich sie nicht rückgängig machen könnte, wenn ich sie mit anderen teilen muss oder wenn es wirklich nützlich wäre, zu sehen, was ich seitdem geändert habe. Das reicht von mehrmals pro Stunde bis zu ein paar Mal pro Tag. Außerdem setze ich mich sehr selten fest, wenn mein Build nicht mindestens kompiliert und ohne sofortige Segfaults ausgeführt wird. Dies kann jedoch auch nützlich sein, wenn Sie nur die Korrektur für diesen bestimmten Fehler isolieren und freigeben möchten.

Beachten Sie, dass Sie mit der zentralisierten Versionskontrolle, die Sie höchstwahrscheinlich für den Job verwenden müssen, im Allgemeinen erst dann ein Commit durchführen, wenn Sie sich ziemlich sicher sind, dass Sie dafür keinen Sturm verärgerter E-Mails erhalten. Abhängig davon, wie unabhängig die Änderungen sind, die Sie vornehmen, und wie sehr sich Ihr Unternehmen dem Dogma der kontinuierlichen Integration anschließt, entspricht dies eher einmal am Tag oder vielleicht einmal im Monat einer großen neuen Funktion.

Dieser Frequenzunterschied ist einer der Hauptgründe, warum ich git zusätzlich zum offiziellen zentralisierten VCS meines Unternehmens verwende.

5
Karl Bielefeldt

Wenn Sie in einer Teamumgebung mit einem Build-Server arbeiten, möchten Sie nur dann einen Commit durchführen, wenn Sie etwas haben, das erstellt wird. Ansonsten ist es für den Rest des Teams sehr nervig :)

3
John Shaft

Habe diese Joel On Software - FogBugz/Kiln Präsentation kürzlich gesehen und denke, dass sie gut zu Ihrer Frage passt.

Während in einigen Versionskontrollen "Festschreiben" in verteiltem VCS gleichbedeutend mit "Veröffentlichen" (oder "anderen Schmerzen bereiten") ist, werden sie häufig getrennt.

Wann ein Commit durchgeführt werden muss, hängt möglicherweise vom verwendeten VCS ab.

1
Greg Domjan

Automatisches Festschreiben nach jedem erfolgreichen Build.

Ich gehe davon aus, dass Sie, wenn Sie zu einer früheren Version zurückkehren möchten und sich an die ungefähre Wanduhrzeit des Punktes erinnern können, zu dem Sie zurückkehren möchten, einfach diese Revision nachschlagen können.

Wenn Sie TDD verwenden, gibt es natürlich besser integrierte Lösungen.

0
rwong

Jede Nacht, wenn ich nach Hause gehe, habe ich ein Skript, das automatisch alle meine Zweige durchläuft und ein Commit ausführt (beachten Sie, dass alle Entwickler diese Änderungen nicht erhalten. Es ist nur mein persönlicher Zweig). Auf diese Weise muss ich nicht darüber nachdenken.

Außerdem habe ich ein Skript, das am Morgen automatisch ein Update ausführt. Ich benutze diese, damit meine Änderungen morgens automatisch dort sind, wenn ich nachts von meinem Laptop aus arbeite.

Was das Zurücksetzen von Änderungen betrifft, die ich tagsüber vornehme, hat mein Editor einen Verlauf aller Änderungen und ist viel schneller als das Festschreiben bei jedem Speichern/Kompilieren.

0
barrem23

Ich arbeite allein. Meine Entwicklungsumgebung ist mein Notizbuch. Die Festschreibungsumgebung ist ein Server im Web.

Wenn der Client den Webserver verwendet, um den Fortschritt zu verfolgen. Fast jeden Tag mache ich einen Upload zusammen mit einer E-Mail, in der steht, was es Neues gibt.

Wenn es sich bei der Festschreibungsumgebung um eine Produktionsumgebung handelt, muss ich vor jedem Festschreiben vor jeder getesteten Änderung vorsichtiger sein. Trotzdem scheint es oft besser zu sein, da niemand Zweifel daran hat, ob die neue Funktion bereits geplant oder durchgeführt wurde. Sie bekommen so schnell wie möglich, was sie verlangen.

0
Andy Canfield