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?
quelle
Antworten:
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
master
undorigin/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
master
oder von einem anderen Feature-Zweig erstellt werden. Irgendwann wird alles wieder zusammengeführtmaster
.Gitflow ( Quelle ): Zwei Hauptzweige verfolgen einen Projektverlauf
develop
undmaster
. Weitere 3 Zweige genannthotfix
,release
undfeature
halten Änderungen direktmaster
zur 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
feature
Verzweigung vonmaster
. Änderungen werden per Pull-Request gepusht. Änderungen, die in akzeptiert wurdenmaster
, 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:
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.
quelle