Coding stelle ich mir in diesem Zusammenhang gerne als Klettern vor. Sie klettern ein Stück und setzen dann einen Anker in den Felsen. Sollten Sie jemals fallen, ist der letzte Anker, den Sie gepflanzt haben, der Punkt, der Sie sichert, sodass Sie nie mehr als ein paar Meter fallen. Gleiches gilt für die Quellcodeverwaltung. Sie codieren ein wenig und wenn Sie eine etwas stabile Position erreichen, legen Sie eine Revision fest. Sollten Sie jemals schrecklich scheitern, können Sie immer zu dieser letzten Revision zurückkehren und Sie wissen, dass sie stabil ist.
Das heißt, wenn Sie in einem Team arbeiten, ist es üblich, sicherzustellen, dass alles, was Sie festschreiben, vollständig, sinnvoll, sauber und ohne Probleme für andere ist. Wenn Sie größere Änderungen vornehmen müssen, die die Arbeit anderer Personen beeinträchtigen könnten, erstellen Sie einen Zweig, damit Sie einen Commit durchführen können, ohne andere zu stören.
Dies hängt auch vom verwendeten SCM-System ab. Bei verteilten Systemen ist das Zusammenführen und Verzweigen in der Regel schmerzlos und schnell, und Sie können ein lokales Commit durchführen. Dies bedeutet, dass Sie viel tun sollten, und Push / Merge, wenn Sie eine erhebliche Menge an Arbeit erledigt haben. Mit zentralisierten Systemen wie svn oder cvs ist das Festschreiben teurer und betrifft alle. Durch das Verzweigen wird dieses Problem teilweise behoben. Da es jedoch auf dem Server auftritt, kann es schmerzhaft langsam sein und das Zusammenführen kann umständlich sein. Daher gibt es bei zentralisierten SCMs häufig eine vorsichtigere Kultur, bei der Sie nur dann eine Verpflichtung eingehen, wenn Sie eine erhebliche Menge an Arbeit geleistet haben.
Was das Add-On betrifft: Bitte, bitte tu das nicht. Codezeilen, Anzahl der Festschreibungen, Anzahl der gefundenen / behobenen Fehler usw. sind allesamt sehr schlechte Qualitäts- oder Quantitätsmessungen.