GIT-Workflow für die Webentwicklung

12

Vor langer Zeit begann das kleine Team von Webentwicklern, mit dem ich zusammenarbeite, Git für die Webentwicklung zu verwenden. Damals haben wir uns einfach dazu verpflichtet, direkt inszeniert oder gemastert zu werden und haben uns dann häufig zwischen den beiden zusammengeschlossen. Es war besser als nichts, aber es war auch ein Durcheinander.

Vor nicht allzu langer Zeit haben wir den Gitflow-Workflow übernommen. Es ist zwar sicherlich besser als das vorhergehende Chaos, wirkt aber etwas umständlich und übermäßig release- / meilensteinorientiert. Meine Kollegen fragen mich häufig, wie es funktionieren soll und was zusammengeführt werden soll und was nicht. Im Allgemeinen scheint es für Webentwicklungsarbeiten ungeeignet zu sein, bei denen wir häufig Code bereitstellen und keine bestimmten Meilensteine ​​für die Veröffentlichung verfolgen.

Auf Anregung eines Freundes habe ich angefangen, mir GitHub Flow anzuschauen . Das Lesen von Scott Chacons Post hier trifft den Schmerzpunkt perfekt:

Warum nutzen wir Git-Flow bei GitHub nicht? Nun, das Hauptproblem ist, dass wir die ganze Zeit bereitstellen. Der Git-Flow-Prozess ist weitgehend auf das „Release“ ausgelegt. Wir haben nicht wirklich "Releases", weil wir jeden Tag in der Produktion bereitstellen - oft mehrmals am Tag.

FWIW, ich habe mir auch diese schöne Zusammenfassung der Workflows auf der Atlassian-Website angesehen: https://www.atlassian.com/git/workflows#!workflow-feature-branch

Sie sehen jedoch ALLE nach schlechten Entscheidungen für die Webentwicklung in einem kleinen Team aus und sind wiederum auf größere Anwendungsversionen ausgerichtet, die nicht häufig / täglich veröffentlicht werden.

Das ist eine Frage über auf SE fragen zu vergleichen git-fließen GitHub-fließen /programming/18188492/what-are-the-pros-and-cons-of-git-flow-vs-github -fließen

Das ist eine gute Antwort im Allgemeinen, aber wie ich in meinem Kommentar unten erwähnt habe, scheint meta.programmers.SE darauf hinzuweisen, dass Fragen zu allgemeinen Best-Workflow-Praktiken hierher gehören, und ich hatte mir eine breitere Liste möglicher Antworten als nur Git-Flow und Github erhofft -flow, während spezifisch für die Webentwicklung. Daher denke ich, dass es hier eine neue Frage verdient.

Was ist Ihrer Meinung nach der beste / bevorzugte git-basierte Workflow für ein kleines Webentwicklungsteam, das an Projekten mit relativ kontinuierlicher Bereitstellung arbeitet? Ist es Github-Flow oder etwas anderes?

jb510
quelle
Übrigens
stelle
Das Teilen Ihrer Forschung hilft allen . Sagen Sie uns, was Sie probiert haben und warum es nicht Ihren Bedürfnissen entsprach. Dies zeigt, dass Sie sich die Zeit genommen haben, um sich selbst zu helfen, es erspart uns, offensichtliche Antworten zu wiederholen, und vor allem hilft es Ihnen, eine spezifischere und relevantere Antwort zu erhalten. Siehe auch Wie man fragt
Mücke
@gnat Ich bin nicht sicher, was ich in dieser Hinsicht mehr teilen könnte? Gitflow so Release-orientiert zu sein, ist umständlich. GitHub-Flow behauptet, für die tägliche Bereitstellung gut zu sein, aber Dutzende von Zweigen, die darauf warten, zusammengeführt zu werden, sehen auch nach Chaos aus. Ich hatte gehofft, jemand würde antworten mit "X ist großartig für Web-Entwickler, weil Y". Es ist gut in dem Link, den ich zur Verfügung gestellt habe, ich denke, ich könnte Zitate daraus extrahieren?
jb510
1
@gnat - Ich habe die Frage komplett umgeschrieben, um mehr Nachforschungen anzustellen und die gesuchte Antwort genau zu beschreiben.
jb510

Antworten:

7

Zunächst möchte ich einen kleinen Überblick über die verschiedenen Workflows geben, die Sie untersucht haben und die Ihrer Meinung nach für die Art der Entwicklung, an der Sie arbeiten, nicht geeignet sind:

  • Zentralisiert ( Quelle ): Ähnlich wie der SVN-Workflow, jetzt jedoch in einer verteilten Umgebung. Jeder Entwickler bearbeitet eine persönliche Kopie von masterund origin/masterübermittelt Änderungen direkt oder per Pull-Request.

  • Feature-Zweig ( Quelle ): Nun, das. Jeder Entwickler, der an einem bestimmten Feature arbeitet, sollte an einem bestimmten Zweig arbeiten, der nur diesem Feature gewidmet ist. Dieser Feature-Zweig sollte aus masteroder von einem anderen Feature-Zweig erstellt werden. Irgendwann wird alles wieder zusammengeführt master.

  • Gitflow ( Quelle ): Zwei Hauptzweige verfolgen einen Projektverlauf developund master. Weitere 3 Zweige genannt hotfix, releaseund featurehalten Änderungen direkt masterzur Fixierung kritischen Produktions Bugs, ändern Versionsnummer und andere Details vor einer Freigabe oder zur Arbeit auf einem bestimmten Merkmal wie Feature - Zweig , respectively.

  • GitHub flow ( Source ): Entwickler erstellen eine featureVerzweigung von master. Änderungen werden per Pull-Request gepusht. Änderungen, die in akzeptiert wurden master , werden sofort von GitHub bot Hubot bereitgestellt.

Für den Entwicklungsteil Ihrer Frage hängt die Antwort vom Hintergrund Ihres Teams ab. Kommen sie aus einer SVN-Umgebung? Dann sollten Sie den zentralisierten Ansatz wählen, da dieser dem SVN am meisten ähnelt. Fühlen sie sich wohl, wenn sie mit Git arbeiten? Dann sollten Sie vielleicht nicht versuchen, den Workflow Ihres Teams an einen solchen anzupassen, sondern Ihren eigenen Workflow implementieren, der auf Ihre Bedürfnisse zugeschnitten ist. Wenn ich das richtig verstehe, sind dies Entwicklungsflexibilität und schnelle Bereitstellung.

Ich denke auch, dass Sie sich darauf konzentrieren sollten, Letzteres zu verbessern. Wie setzt sich Ihre Bereitstellungspipeline zusammen? In " Continuous Delivery: Zuverlässige Softwareversionen durch Build-, Test- und Bereitstellungsautomatisierung " identifizieren die Autoren mögliche Ursachen für seltene Bereitstellungen. Einige davon sind:

  • Der Bereitstellungsprozess ist nicht automatisiert.
  • Das Testen dauert lange.
  • Die Leute verstehen den Build / Test / Deployment-Prozess nicht.
  • Entwickler sind nicht diszipliniert, wenn es darum geht, die Anwendung durch kleine, inkrementelle Änderungen funktionsfähig zu halten, und brechen daher häufig vorhandene Funktionen

Klingt irgendetwas davon nach etwas, das Sie verbessern könnten? Vielleicht könnten Sie uns ein bisschen mehr darüber erzählen, wie Sie und Ihr Team diesen Teil des Projekts handhaben.

Hernán Erasmo
quelle
2
+1, der Schlüssel zu cd ist nicht git oder dein gitflow, sondern CI und Versandworkflow.
Wyatt Barnett
Ich denke viel darüber nach. Danke für den Einblick. FWIW, ich vermeide ausdrücklich die Verwendung des Begriffs CI, weil wir CI nicht verwenden. Vielleicht sollten wir, aber wir tun es nicht, es ist einfach zu umständlich für die Dutzende von Projekten, an denen wir in einer bestimmten Woche arbeiten, einige kurzfristig, andere langfristig.
jb510
2
@ jb510 - wir haben ein ähnliches Projekt-Setup, ich würde nicht davon träumen, es ohne CI zu fliegen. Das Wechseln von Kontexten ist viel einfacher, wenn alle dummen, aber fragilen Teile mit Skripten versehen sind.
Wyatt Barnett
1
Manchmal zu implementieren Unfähigkeit leicht CI ist ein Zeichen dafür , wie viel Sie brauchen CI an einem Projekt. Keine Unit-Tests? Bereitstellung alles manuell? Viele umständliche Schritte bereitstellen? Muss überprüft werden.
Kzqai,
1
Ich habe diese Frage und Antwort im Laufe der Jahre verfolgt. Ich hatte gehofft, dass andere auch Antworten anbieten würden, aber dies ist selbst eine großartige Antwort, so dass es endlich als akzeptiert markiert wurde (wahrscheinlich hätte das schon vor langer Zeit getan werden müssen)
jb510