Ich bin mit dieser Regel nicht einverstanden und stimme dem zu, was Mason Wheeler gesagt hat. Ich möchte ein paar Ideen hinzufügen.
Ich versuche jedes Mal, ein Commit durchzuführen, wenn ich eine wichtige Änderung vorgenommen habe: Dies kann mehrmals am Tag erfolgen, wenn ich mehrere kleine Fehler behebe, oder einmal pro Woche, wenn ich an einer größeren Software arbeite, die für den Rest von nicht verwendbar ist den Code in irgendeiner sinnvollen Weise, bis er einen konsistenten Zustand erreicht.
Ich interpretiere Commit als Veröffentlichung einer aussagekräftigen Revision , die der Codebasis neue Funktionen hinzufügt. Ich denke, man sollte versuchen, den Code vor dem Festschreiben zu bereinigen, damit andere Entwickler die Bedeutung und den Zweck der Änderung verstehen, wenn sie sich den Revisionsverlauf ansehen. Je weniger Änderungen andere Entwickler im Verlauf sehen, desto besser: Wenn ich mir den Versionsverlauf anschaue, möchte ich Inkremente sehen, die einige sinnvolle Funktionen hinzufügen. Ich bin nicht an jeder kleinen Idee interessiert, die jeder Entwickler hatte, und wollte sie ausprobieren, bevor sie zur Lösung gelangten.
Darüber hinaus halte ich es nicht für eine gute Idee, den SVN-Server (oder ein anderes Versionskontrollsystem) als Backup-Funktion zu verwenden, für die der aktuelle Snapshot des Codes festgeschrieben ist (vorausgesetzt, er wird kompiliert): Sie können einen USB-Stick verwenden oder ein externes USB-Laufwerk oder eine Netzwerkfestplatte, um Ihren aktuellen Code zu spiegeln, damit er nicht verloren geht, wenn Ihr Computer ausfällt. Revisionskontrolle und Datensicherung sind zwei verschiedene Dinge. Das Veröffentlichen einer Revision ist nicht dasselbe wie das Speichern eines Schnappschusses
Ihres Codes.
Schließlich denke ich, dass es kein Problem sein sollte, von Zeit zu Zeit ein Commit durchzuführen (dh nur wenn man wirklich mit dem aktuellen Stand des Codes zufrieden ist) und Zusammenführungskonflikte zu vermeiden, ist keine gute Rechtfertigung für ein (zu häufiges) Commit. Viele Zusammenführungskonflikte treten auf, wenn verschiedene Personen zur gleichen Zeit an denselben Dateien arbeiten, was eine schlechte Praxis ist (siehe z. B. diesen Artikel , Punkt 7). Zusammenführungskonflikte sollten reduziert werden, indem ein Projekt in Module mit klaren Schnittstellen und so wenig Abhängigkeiten wie möglich aufgeteilt wird und die Arbeit der Entwickler so koordiniert wird, dass sich der Code, an dem sie arbeiten, so wenig wie möglich überlappt.
Nur meine 2 Cent.
BEARBEITEN
Ein weiterer Grund gegen vorzeitige Commits ist, dass eine (sehr) fehlerhafte Version nicht getestet werden kann. Wenn Sie einen Commit für den Trunk durchführen und Ihr Testteam jeden Tag Tests durchführt, ist möglicherweise für einige Stunden (oder einen Tag lang) keine testbare Version verfügbar. Selbst wenn Sie nicht versuchen, den Fehler zu beheben und nur Ihre Änderungen rückgängig zu machen, kann eine Neuerstellung einige Stunden dauern. Wenn beispielsweise fünf Tester in Ihrem Team arbeiten, haben Sie aufgrund von Inaktivität 5 x 2 = 10 Stunden der Teamzeit verschwendet. Es ist mir einmal passiert, also versuche ich wirklich, vorzeitige Commits im Namen von Commit so schnell wie möglich zu vermeiden .