Wenn wir den Commit-Verlauf einer Software überprüfen, stellen wir manchmal fest, dass es einige wirklich GROSSARTIGE Commits gibt - sie können 10 oder 20 Dateien mit Hunderten von geänderten Quellcodezeilen (Delta) ändern. Ich erinnere mich, dass es einen allgemein verwendeten Begriff für ein solches BIG-Commit gibt, aber ich kann mich nicht genau erinnern, was dieser Begriff ist. Kann mir jemand helfen? Was ist der Begriff, den Programmierer normalerweise verwenden, um sich auf ein solches BIG und Riesen-Commit zu beziehen?
Übrigens, ist es eine gute Praxis, eine Menge Änderungen vorzunehmen?
UPDATE: Vielen Dank für die anregende Diskussion! Aber ich denke, "Codebombe" ist der Begriff, den ich suche.
cluster f...
Antworten:
(1) Ben Collins-Sussman : "..." Codebomben ". Das heißt, was machen Sie, wenn jemand zu einem Open-Source-Projekt mit einem gigantischen neuen Feature auftaucht, dessen Erstellung Monate in Anspruch nahm? Wer hat die Zeit, dies zu überprüfen Tausende von Codezeilen? ... "
(2) Dan Fabulich : „The Code Bombe, oder: Der Neuling mit großen Ideen ... Ein Code Bombe ist ein Patch, der so groß ist , dass niemand es überprüfen können.“
(3) Google Summer of Code: Richtlinien : "Früh festschreiben, oft festschreiben ... Bitte nicht den ganzen Tag arbeiten und dann alles in einer einzigen Codebombe rausschieben . Stattdessen sollte jedes Festschreiben nur für eine Aufgabe abgeschlossen sein was in der Protokollnachricht zusammengefasst werden sollte. "
(4) Jeff Atwood : „Code-Bomben ... Regel # 30: Do not go dunkel ....
quelle
Wir nennen es wahrscheinlich ein schlechtes Commit . :)
Schlechte Praxis
Und ja, das würde im Allgemeinen als schlechte Praxis angesehen , da es die negativen Auswirkungen hat von:
Akzeptable Fälle
Es kann jedoch Fälle geben, in denen umfangreiche Commits durchaus akzeptabel sind . Zum Beispiel:
Bevorzugen Sie daher, wann immer möglich, Commits vom Typ "chirurgischer Schlag" (und verknüpfen Sie sie mit Aufgaben-IDs in Ihrem Issue-Tracker!). Wenn Sie einen gültigen Grund haben, fahren Sie fort.
Abgesehen davon weiß ich es nicht und glaube auch nicht, dass ich jemals einen speziellen Namen für ein großes Commit gehört habe. Ein Monster-Commit? Ein Fat-Commit?
Update: Die Antwort von David Cary verweist auf namhafte IT-Akteure, die den Begriff "Codebombe" verwenden (vor allem Collins-Sussman, der ursprüngliche Schöpfer von Subversion ). So (obwohl ich bisher nicht sagen kann, ob ich es oft gehört habe).
quelle
Nun, es ist keine gute Praxis, Änderungen für eine lange Zeit beizubehalten, eine Vielzahl von Funktionen und Fehlerkorrekturen zu implementieren und sie dann festzuschreiben. Dies ist eine Möglichkeit, wie ein großes Festschreiben erfolgen kann.
Dies kann auch passieren, wenn durch ein Refactoring die Signatur einer häufig verwendeten Funktion geändert wird und dann alle diese Funktionen geändert werden müssen. Das ist nicht unbedingt schlecht, und ich möchte nicht, dass Entwickler den Code bereinigen, weil sie befürchten, eine Schwelle zu überschreiten.
Es geht also um mehr als nur um die Anzahl der Dateien, die in einem Commit berührt wurden.
quelle
Der Begriff, den ich gehört habe, ist "klobige Check-Ins" . Und ich bin kein Fan von ihnen. Ich mag kleinere Commits, die sicherstellen, dass bei vernünftigen Schritten in einem Projekt nichts anderes kaputt geht. Das große Engagement ist im Allgemeinen mit Problemen behaftet, die noch einige Zeit nachwirken, wenn dies nicht der Fall ist.
quelle
Ich nenne es "typisches SVN-Commit" oder "morgen ist Release-Tag-Commit".
So sehr ich SVN liebe, bin ich nur durch die Tatsache abgeschreckt, dass ich keine lokalen Commits machen kann.
BEARBEITEN: Sie haben normalerweise die Wörter "Zeug" und "Bier" in der Commit-Nachricht.
WIEDER BEARBEITEN: Viele Änderungen sind zwar nicht unbedingt eine schlechte Praxis, sollten aber so weit wie möglich vermieden werden. Ich finde es einfacher, eine Revision / Festschreibung zu überprüfen, die kurz und prägnant ist. (Gepaart mit einer gut geschriebenen Commit-Nachricht. Ein schlechtes Beispiel finden Sie in meiner vorherigen Bearbeitung.)
quelle
Ein "heißer, dampfender Klumpen Code". :-)
quelle
quelle
Normalerweise neigen viele Leute dazu, große Commits mit zentralem VCS durchzuführen, insbesondere der Server erzwingt gute Commit-Richtlinien. Das heißt, das Commit muss alle Tests bestehen und die Tests dauern länger (länger als einige Sekunden). Daher möchten Entwickler nicht so lange warten, um mehrere Commits durchzuführen und Änderungen in mehrere kleine Commits aufzuteilen.
Und Entwickler, die mit VCS nichts anfangen können, vergessen möglicherweise, Änderungen in mehrere kleine Commits aufzuteilen. Sie erinnern sich nur daran, sich zu verpflichten, wenn sie das Programm an das QA-Team weitergeben. Schlimmer noch, um zu vermeiden, dass andere den fehlerhaften Code sehen, verpflichten sie sich nicht, bevor sie den QS-Test erfolgreich bestanden haben. Zuletzt haben sie nicht bemerkt, dass sie Ausgabebinärdateien, temporäre Dateien und Linker-Ausgaben festgeschrieben haben, die wirklich zu einem "großen" Festschreiben führen.
quelle