it-swarm.com.de

Was sind die Vorteile der Verzweigung als Einzelentwickler?

Zunächst einmal ist mir bekannt, dass viele Fragen zu VCS als Einzelentwickler gestellt wurden, aber sie sind oft zu weit gefasst. Dies betrifft nur die Verzweigung, und dennoch wurde sie als Duplikat markiert ... das angebliche Duplikat wird wiederum als ein weiteres Duplikat einer anderen Frage markiert, die zu weit gefasst ist und keine spezifische Verzweigung betrifft. So ist meine Frage einzigartig.

Was sind die Vorteile, wenn überhaupt, die Verzweigung als Einzelentwickler? Ich habe oft gesehen, dass es sogar in einem Solo-Entwickler-Kontext empfohlen wird, aber soweit ich sehen kann, sehe ich nicht, wie man einen 'Master'-Trunk für die Entwicklung verwendet und für funktionierenden, Release-fähigen Code verzweigt Ich könnte die Kraft der Verzweigung nutzen (zum Beispiel, um neue Funktionen zu unterteilen), ohne den gesamten Entwicklungsprozess zu komplizieren.

118
flatterino

Die Vorteile sind meist die gleichen wie für Entwicklergruppen. Durch die Verwendung eines immer freigegebenen Master-Zweigs und von Feature-Zweigen zum Entwickeln neuer Features können Sie den Master jederzeit freigeben. Finden Sie einen wichtigen Fehler, während Sie an einer Funktion arbeiten? Verzweigen, reparieren, freigeben, zurückschalten und weiterentwickeln.

Oder vielleicht ist dies ein Hobbyprojekt und Sie mögen es einfach, ein bisschen an dieser Funktion und ein bisschen davon arbeiten zu können, wenn die Stimmung Sie trifft. Sie emulieren im Grunde ein Team aus mehreren Personen, indem Sie die Zeit aufteilen.

Die implizite Verzweigung, die DVCSs für Klone durchführen, bedeutet, dass es bei formalen Verzweigungen im autorisierenden Repository weniger um die Koordination von Personen als vielmehr um die Koordinierung von Entwicklungsrichtungen geht, und sogar eine einzelne Person kann mehrere davon ausführen.

197
Sebastian Redl

Langzeitentwicklung

Die Verzweigung für ein Einzelpersonenteam wäre nützlich für eine langjährige Entwicklungsfunktion, die ansonsten nicht in Ihren Veröffentlichungszyklus passt.

Sie können einen Zweig für Ihre mehrmonatige Änderung übernehmen und trotzdem in regelmäßigen Abständen die täglichen Fehlerkorrekturen oder Änderungen aus Ihrem Hauptzweig übertragen.

Dies hat den Vorteil gegenüber "Switches" in einem einzelnen Zweig, da sich Ihr Hauptzweig immer in einem bereitstellbaren Zustand befindet und Sie garantiert sind, dass nichts auf lange Sicht Auswirkungen auf anderen, zuvor getesteten Code hat.

Experimentelle Funktionen

Ein Zweig kann auch für Funktionen nützlich sein, die Sie möglicherweise als Prototyp erstellen möchten, die es jedoch möglicherweise nie in Ihren bereitgestellten Code schaffen. Wenn Sie diese in einem Zweig ausführen, der letztendlich weggeworfen wird, bedeutet dies, dass Sie Ihre Hauptcodebasis niemals unnötig verschmutzen.

42
Paddy

Ich benutze es für kritische Website-Wartung. Ich bin der einzige Entwickler, aber ich habe einen Master, entwickle und gebe Filialen heraus.

Mein Arbeitsprozess für die Einrichtung der Site sieht folgendermaßen aus:

  1. Machen Sie einen funktionsfähigen Hauptzweig. Erstes Commit durchführen.

  2. Kasse entwickeln Zweig. Tun Sie nichts, entwickeln Sie Funktionen als Testpuffer für die Zusammenführung mit dem Master.

  3. Kasse Problem Zweig. Codieren Sie Ihr Problem, wenn es fertig ist, ziehen Sie es in die Entwicklung, prüfen Sie, ob Probleme auftreten, führen Sie Konflikte zusammen usw. Beheben Sie diese.

Wenn genügend Probleme für eine Veröffentlichung in Develop zusammengeführt wurden und die Entwicklung auf Stabilität getestet wurde, ziehen Sie Develop in Master.

   Master
     |
   Develop  - E
   / |  \  \
 A   B   C  D

Auf diese Weise erhalten Sie eine vollständige Testsammlung in der Entwicklung, in der Sie Stabilität, Probleme usw. testen können, ohne das Risiko eingehen zu müssen, den Master zu verletzen und Commits zurückzusetzen, wenn sie schädlich sind.

Wenn Sie einzelne Filialen für das Festschreiben verwenden, können Sie die bereits geleistete Arbeit "verlassen", neu mit etwas anderem beginnen, um ein dringenderes Problem zu beheben, und dies früher einführen.

Im wirklichen Leben habe ich normalerweise einen Themenzweig und ziehe diesen in die Entwicklung und dann in den Master. Manchmal ist es langweilig, aber mindestens alle zwei Monate muss ich die Arbeit im Handumdrehen fallen lassen, weil jemand die Idee hatte, dass ich RightNow ™ machen muss, und auf diese Weise kann ich schnell in einen Grundzustand zurückkehren und das Ding machen und danach weiter wo ich war. Besonders bei großen Projekten, die mehrere Wochen dauern, ist es ein Glücksfall, dass ich schnell die Filialen wechseln kann.

Stellen Sie sich das folgende Szenario vor: Sie arbeiten immer an einem Hauptzweig und haben AwesomeCodeThing ™ in Arbeit, wodurch Ihr Hauptzweig in der Chirurgie am offenen Herzen verbleibt und ein YugeBug ™ angezeigt wird, der dringend repariert werden muss, da sich sonst Tausende von Benutzern bei Ihnen über BigProblems ™ beschweren
Die einzige Möglichkeit, Ihr Problem in einem solchen Szenario schnell zu beheben,

  1. überprüfen Sie Ihre vorherigen Commits.
  2. sehen Sie, wann Ihr letztes stabiles Commit war (Fluchen ist optional).
  3. rollback zu diesem Commit
  4. fix machen, Fix in die Produktion drücken
  5. lösen Sie alle Konflikte und Probleme, die Sie jetzt haben, um zum AwesomeCodeThing ™ -Status zurückzukehren
  6. aufgeben, weinen und von vorne anfangen (optional)

Wenn Sie Zweige verwenden:

  1. Kasse Master
  2. erstellen Sie einen Zweig UrgentFix ™ und beheben Sie Probleme
  3. ziehen Sie UrgentFix ™ in den Master
  4. Zur Produktion schieben
  5. Meister in Entwicklung zusammenführen
  6. Zusammenführen entwickeln sich zu AwesomeCodeThing ™
  7. hol ein bier und arbeite weiter.
16
Tschallacka

Verzweigungen erleichtern die gleichzeitige Bearbeitung mehrerer Funktionen. Dies kann sehr hilfreich sein, wenn sich die Prioritäten im Verlauf eines Projekts ändern.

Angenommen, Sie entscheiden, dass eine Funktion jetzt wichtiger ist. Möglicherweise müssen Sie dringend einen kritischen Fehler in einem Live-System beheben. Möglicherweise arbeiten Sie über einen längeren Zeitraum mit einem Client an mehreren Features und möchten möglicherweise den Fortschritt jedes Features separat demonstrieren. Vielleicht haben Sie gerade über einen fiesen Zero-Day-Exploit gelesen und möchten sich darauf einlassen, bevor der Client darüber liest.

Wenn Sie Zweige für jede Funktion/jeden Hotfix verwenden, ist es normalerweise einfacher, sauberer und schneller, diese Änderungen zu isolieren und bereitzustellen, anstatt für alles einen einzigen Zweig zu verwenden. Dies gilt unabhängig davon, ob Sie alleiniger Entwickler oder Teil eines Teams sind.

Was einen tatsächlichen Prozess betrifft, finde ich, dass Git Flow gut funktioniert. Daniel Kummers Git Flow Spickzettel ist eine großartige Ressource, die es wert ist, angeschaut zu werden, auch wenn Sie kein Git verwenden.

4
Andrew Calder

Wie auf anderen Postern erwähnt, ähneln die Vorteile im Wesentlichen der Arbeit in Teams: Die Fähigkeit, Features unabhängig zu entwickeln und zu testen, einen separaten Hauptzweig für Hotfixes/Produktionsbereitstellungen zu unterhalten und zu experimentieren.

Für mich persönlich neige ich im Allgemeinen dazu, im Master zu arbeiten, wenn ich den Bereich, an dem ich arbeite, sehr gut kenne. Das erhöht nur den Overhead für die Branche, da ich sie sowieso nur zusammenführen werde.

Wenn ich jedoch any Zögern über die Änderungen habe, die ich vornehme, werde ich verzweigen und erst PR/Merge, wenn sich die Verzweigung wie erwartet verhält und im Allgemeinen vollständig getestet ist. Wenn ich auf diese Weise ein Problem entdecke, bei dem das Zurücksetzen die beste Vorgehensweise ist, handelt es sich um ein einzelnes Commit anstelle einer ganzen Serie (ich kann mich nie an die Syntax erinnern, mit der ein Rollback einer Reihe von Commits durchgeführt wird, aber ein einzelnes ist einfach).

2
RmxPatrick