Die allgemeine Regel ist, Check-ins klein zu halten und häufig einzuchecken. Manchmal erfordert die Aufgabe jedoch große Änderungen am zugrunde liegenden Framework. Wenn Sie dann einchecken, bevor Sie die Aufgabe ausführen, wird das Projekt unterbrochen, bis Sie die fertige Arbeit einchecken.
Welche Strategien verwenden die Menschen, um das Risiko eines Arbeitsverlusts zu verringern oder um zu entscheiden, was Sie tun, ist der falsche Ansatz. Ändern Sie dann Ihre Meinung, nachdem Sie den Code entfernt und einen anderen Ansatz ausprobiert haben?
Wenn ich kann, checke ich die Hälfte der auskommentierten Arbeiten ein oder wenn sie kompiliert werden und nichts neue Dateien verwendet, checke ich sie ein. Je größer die Änderung, desto wahrscheinlicher ist es, dass ich das Projekt verzweige und dann wieder zusammenführe wenn ich alles wieder zum arbeiten habe. Eine weitere Option, wenn das Versionsverwaltungssystem dies zulässt, sind Regalsätze, bei denen es sich im Grunde genommen um kleine Zweige handelt. Wenn ich also für den Tag fertig bin oder zu einem Entscheidungspunkt komme, werde ich meine Änderungen zurückstellen, und wenn dann etwas Katastrophales passiert oder ich zu diesem Punkt zurückkehren möchte, kann ich es.
quelle
Antworten:
Ich benutze git, also lautet meine Antwort "branch". Verzweigen Sie sich und legen Sie ein Stück Mahlzeit fest, während Sie die verschiedenen Teile vervollständigen.
Schieben Sie Ihre Commits nach oben, wenn Sie zufrieden sind, damit Ihre Kollegen die Änderungen überprüfen können, ohne den Trunk zu stören.
Wenn alle mit dem Code zufrieden sind, führen Sie ihn zusammen und Sie sind fertig!
(Was ich für relativ lange laufende Zweige mache, ist das regelmäßige Zusammenführen von Stamm (Master, in Git-Terminologie) in meinem Zweig, damit die beiden Zweige nicht zu radikal voneinander abweichen.)
quelle
Ich denke, die Antwort hängt davon ab, welche Art von Versionskontrollsystem Sie verwenden: zentralisiert (z. B. Subversion) oder verteilt (z. B. Git). Ich habe keine reale Erfahrung mit der Verwendung eines verteilten Versionsverwaltungssystems, daher basiert meine Antwort auf dem, was wir mit Subversion machen.
Wenn es eine große Änderung gibt, die unseren Kofferraumaufbau über einen bestimmten Zeitraum hinweg zerstört oder den Rest des Teams auf andere Weise wirklich stört, werden wir einen Zweig erstellen. Ich würde jedoch sagen, dass Sie so viel wie möglich tun sollten, um dies zu vermeiden - die meisten Änderungen können mit geringem Aufwand neben dem Rest des Codes stehen. Sie können beispielsweise Codepfade in den neuen Code auslösen (mit einfachen if-Anweisungen oder die neuen Versionen basierend auf den Konfigurationseinstellungen einfügen, wenn Sie ein DI-Framework verwenden). Wenn Sie fertig sind, ändern Sie einfach die Konfiguration auf die neue Version, testen alles, löschen den nicht verwendeten Code, testen erneut und löschen schließlich die Konfigurationseinstellung. Sie können das nicht immer tun, aber wegen des Overheads bei der Wartung einer Zweigstelle sollten Sie immer prüfen, ob dies möglich ist.
Wenn Sie verzweigen, denke ich, dass der Fehler, den ich oft sehe, darin besteht, dass der Zweig nicht mit dem Stamm auf dem neuesten Stand ist. Sie sollten ständig Änderungen aus dem Trunk in Ihren Zweig einführen, solange dieser vorhanden ist, damit das umgekehrte Zusammenführen von allem wieder ziemlich trivial ist, wenn Sie fertig sind.
quelle
In unserem Team verwenden wir Subversion und übernehmen normalerweise kleine Änderungen direkt am Trunk. Bei größeren Aufgaben erstellt der Entwickler, der daran arbeitet, normalerweise einen privaten Zweig, der nach Abschluss des Vorgangs in den Trunk integriert wird. Dann wird die private Niederlassung gelöscht. Während die Privatniederlassung existiert, sollte ihr Eigentümer natürlich häufig einchecken.
Wir versuchen, langlebige Zweige und Zusammenschlüsse von Stamm zu Zweig zu vermeiden, da dies eine sorgfältige Buchhaltung erfordert. Stattdessen haben wir relativ kurzlebige Zweige, die nur einmal wieder mit dem Stamm zusammengeführt werden und bald darauf gelöscht werden.
Und wir haben die Regel, dass nichts in den Trunk übernommen oder zusammengeführt werden kann, bis mindestens eine andere Person die Änderungen durchgesehen und genehmigt hat.
quelle
Genau wie der übliche Kommentar von SQL Server-Leuten "es kommt darauf an"
Wenn Sie können, würde ich vorschlagen, dass Sie einen Zweig auf dem Code erstellen, damit Sie weiterhin kleine Checkins Ihrer Arbeit anwenden können. Führen Sie nach Abschluss eine Zusammenführung in den Hauptstamm durch.
Ja, es besteht die Möglichkeit, dass Doppelarbeit auf diese Weise erneut ausgeführt wird. Aber zumindest werden Sie eine Spur von Arbeit pflegen, die Sie rückgängig machen können. Es erweist sich als Sackgasse.
quelle