Bei der Arbeit an einem Projekt kann der Code über einen längeren Zeitraum von einigen Wochen / Monaten / Jahren in einem einzigen Tag oder Stück für Stück relativ schnell entwickelt werden. Da Code-Commits immer mehr als Maß für die Projektentwicklung angesehen werden, bedeutet dies nicht, dass mehr Code geschrieben wurde als in einem Projekt mit geringeren Commits.
Die Frage ist also, wann wirklich ein Commit für das Repository durchgeführt werden muss, damit das Commit gerechtfertigt ist.
Als Add-On: Ist es richtig, die Entwicklung eines Projekts anhand seiner Commits zu messen?
Antworten:
Sie schreiben fest, wenn Sie einen Codebasisstatus erreicht haben, an den Sie sich erinnern möchten. Es gibt viele Gründe, warum Sie sich an einen bestimmten Codebasisstatus erinnern möchten. Daher kann es keine festen Regeln für den Zeitpunkt des Commits geben. Die Anzahl der Commits ist jedoch definitiv kein Maß für Qualität oder Fortschritt.
quelle
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.
quelle
git rebase -i
. B. ).Wenn Sie DVCS wie Mercurial oder Git verwenden, sollten Sie immer dann ein Commit für Ihr lokales Repository ausführen, wenn Sie eine erhebliche Menge an Arbeit erledigt haben. Übertragen Sie es jedoch nur dann in das freigegebene Repository, wenn die in sich abgeschlossene, getestete Änderung funktioniert.
Für nicht verteilte VCS (wie z. B. SVN) gilt dieselbe Logik, anstatt des lokalen Repositorys den privaten Zweig zu verwenden, statt den Hauptzweig per Push-Merge zu verbinden.
quelle
Sie sollten früh und oft festlegen.
Ich kenne Leute, die so oft wie alle 90 Sekunden begehen. Ernsthaft. Es scheint für sie zu funktionieren. Ich habe mit dem Festschreiben jedes Mal experimentiert, wenn ich eine Datei speichere, was wahrscheinlich häufiger als 90 Sekunden ist. Heute lege ich wahrscheinlich ungefähr alle 15 Minuten fest. Ein VCS, mit dem Sie mehrere Commits zu einem zusammenfassen können und das lokale Commits (wie git) zulässt, erleichtert dies erheblich.
Wie oft solltest du begehen? Schwer zu sagen, aber wahrscheinlich öfter als jetzt. Legen Sie sich immer öfter fest, finden Sie einen Punkt, der sich zu oft absurd anfühlt, und ziehen Sie sich dann etwas zurück. Die Chancen stehen gut, dass Sie am Ende etwas Vernünftiges haben.
Sie messen die Entwicklung eines Produkts anhand des Werts, der an die Benutzer geliefert wird. Es gibt keine andere genaue Messung.
quelle
Commits sind die Bausteine aller versionskontrollierten Daten / Codes. Jedes Commit sollte genau eine der folgenden Aktionen ausführen:
Auch bei der Arbeit in Zweigen müssen Commits zu einem Zweig gehen, der geeigneter ist. Zwei Festschreibungen sollten nicht dieselbe Festschreibungsnachricht enthalten (was ähnliche Änderungen impliziert), sondern sich in verschiedenen Zweigen befinden, da dies die Mitarbeiter verwirrt. Besser ist es, den Hauptzweig zu übernehmen und ihn mit dem Feature-Zweig zusammenzuführen.
Wenn Committer die obige Regel befolgen, ist es unerheblich,
In Bezug auf die Messung des Projektfortschritts anhand von Commits ist es möglich, dass Refactoring-Commits und Fehlerbehebungs-Commits nicht berücksichtigt werden.
quelle
Ein Commit wird nur durchgeführt, wenn Sie die angegebene Funktion / das Modul / die Funktionalität erfolgreich in einem Gerät getestet haben und mit hinreichender Sicherheit zur Integration oder zum Testen des Systems bereit sind.
Und um Ihre Zusatzfragen zu beantworten - NEIN !! Das Maß für den Standort des Projekts sollte niemals durch die Anzahl der Festschreibungen bestimmt werden. Wer weiß, was tatsächlich festgeschrieben wurde? Wurde es erfolgreich systemgetestet oder sogar einheitengetestet? Nur weil es engagiert ist, heißt das nicht, dass es produktionsbereit ist.
quelle
Nein. Es gab eine tägliche WTF darüber, warum das eine schreckliche Idee ist.
Meine allgemeine Faustregel beim Festschreiben von Code lautet, dass ich einchecke, wenn ich einen Codeabschnitt fertiggestellt habe und dieser kompiliert wird. Chunk ist nicht wirklich definiert. Wenn es eine kleine Aufgabe ist, werde ich vielleicht erst einchecken, wenn ich damit fertig bin. Wenn es größer ist, kann es sein, dass ich nach Abschluss jedes logischen Abschnitts einchecke.
Aber checke niemals ein, wenn es nicht kompiliert wird. Ich weiß, es scheint eine dumme Sache zu sein, es laut auszusprechen, aber ich musste es den Leuten vorher erklären.
quelle
Machen Sie ein Commit, wenn der Code für andere Benutzer des Codes freigegeben werden kann - wenn er relativ stabil, sicher und ordnungsgemäß getestet ist.
Und nein, ich denke nicht, dass Commits eine großartige Metrik für die Entwicklung eines Projekts sind, da ich einige Entwickler kenne, die jede kleine und kleine Änderung vornehmen, und andere, die nur große große Änderungen an der Funktionalität vornehmen. Wie messen Sie quantitativ den Wert eines Commits gegenüber einem anderen?
quelle
Sobald die entsprechende Aufgabe erledigt ist . Eine Aufgabe ist Teil einer User Story .
Eine Aufgabe ist erledigt, wenn:
Sie können eine andere Definition von "erledigt" haben .
Ich sehe den Wert nicht in der Anzahl der Commits. Wenn Sie jedoch jemanden sehen, der über einen längeren Zeitraum an derselben User Story (oder, schlimmer noch, Storys) arbeitet, ist dies ein Geruch.
quelle
Führen Sie jede wesentliche Änderung durch, von der Sie nicht glauben, dass sie etwas kaputt macht. Das einzige, was Sie nicht festschreiben sollten, sind Stiländerungen, da sie keine Änderungen in der Logik beinhalten. Aber ansonsten ist es umso besser, je kleiner die Änderungen sind, die Sie vornehmen.
Je kleiner die Commits sind, desto detaillierter können Sie den Gedankenprozess dokumentieren, was ein Aspekt eines guten Commit-Protokolls ist. Eine gute Codeüberprüfung sollte nicht nur das Codeergebnis, sondern auch den Denkprozess betreffen.
Da ich viele kleine Commits habe, ist es auch einfach, sie zu halbieren, eine viel zu wenig genutzte Funktion der Versionskontrolle, die mir viele Stunden erspart hat, nach Nadel-Bugs in Heuhaufen-Codebasen zu suchen.
Kurz gesagt: Halbieren; Entdecken Sie ein Problem in der aktuellen Codebasis. Wählen Sie dann im Änderungsprotokoll ein Commit aus, bei dem Sie sicher sind, dass das betreffende Problem nicht vorhanden ist. Beginnen Sie mit dem Auschecken des Commits genau in der Mitte zwischen der "guten" und der "schlechten" Version. Prüfen Sie, ob das Problem weiterhin besteht. Wenn dies der Fall ist, müssen Sie einen Blick in die Mitte des "guten" und des zuvor getesteten Commits werfen. Wenn das Problem behoben ist, wurde es nach dieser speziellen Änderung eingeführt. Überprüfen Sie daher die Mitte zwischen dem "schlechten" und dem zuvor getesteten Commit. Wiederholen. Schließlich werden Sie das Commit erhalten, das das Problem verursacht hat. Aber nur, wenn Sie kleine Commits haben, sonst wissen Sie, in welchem großen Haufen von Änderungen das Problem aufgetreten ist.
So funktioniert es mit Git, aber das Prinzip gilt für jede Versionskontrolle.
quelle
Wann:
quelle