Wenn Sie von etwas zu etwas anderem migrieren, müssen Sie nur zwei Dinge definieren:
- Was ist dein Ziel?
- Wie komme ich dorthin? (Der Migrationsplan)
Der erste Teil wird leider oft übersehen oder ist viel zu vage. Sie können nicht einfach sagen, dass das, was Sie haben, ein Durcheinander ist, und Sie möchten es organisieren. Was würde das heißen? Jeder würde eine andere Interpretation haben (auch bekannt als: Jeder Entwickler denkt, dass seine oder ihre Art, Dinge zu tun, die beste ist).
Es besteht die Möglichkeit, dass alle Zweige, die Sie haben, einen Zweck erfüllen oder erfüllt haben. Ohne einen klar definierten Zielprozess werden die Mitarbeiter weiterhin das tun, was für sie am besten geeignet ist (und das zu Recht).
Zum Beispiel sollte Ihr Ziel so klar definiert sein, wie Vincent Driessen sein "erfolgreiches Git-Verzweigungsmodell" definiert hat . Wenn Sie sich dieses Modell ansehen, ist es sehr genau: Es gibt an, wo stabiler Code und wo instabile Features entwickelt werden sollten. Außerdem erfahren Sie, wie und wann Sie verzweigen, aktualisieren und wieder zusammenführen können. Sie wissen, wofür jeder Zweig ist und was Sie damit tun müssen. Wir verwenden eine Variation dessen, was Vincent vorgeschlagen hat und unsere Variation ist in unserem Wiki definiert.
Wichtig ist, dass das gesamte Team ein Ziel versteht und sich darauf einigt. Es könnte sich lohnen, die Leute daran zu erinnern, dass Sie nicht nach ihrem persönlichen bevorzugten Verzweigungsmodell suchen, sondern nach einem Modell, auf das sich alle Teammitglieder einigen und es einfach anwenden können.
Sobald Sie Ihr Ziel erreicht haben, können Sie Ihren Migrationsplan ausarbeiten. Dieser Plan kann so lang oder so kurz sein, wie Sie möchten. Ich habe gesehen, wie ein solches Verzweigungsmodell über Nacht auferlegt wurde. An anderen Stellen wurden zwei oder drei Sprints absolviert. Es macht mir nicht viel aus, solange wir uns verbessern.
Sie können mit den "größten" oder wichtigeren Branchen beginnen. ZB: "Master muss sich von nun an immer in einem Zustand befinden, um in prod implementiert zu werden, und der dev-Zweig muss immer kompiliert werden" (oder was auch immer Ihre Regeln sein). Erzwingen Sie dann Versionszweige (Release-Zweige). Erzwingen Sie anschließend Feature-Verzweigungen. Setzen Sie danach einen Code-Freeze für den Versionszweig ein, falls dies sinnvoll ist.
Bei DevOps dreht sich alles um Kommunikation, Offenheit und Effizienz. Diese Konzepte müssen während des gesamten Prozesses berücksichtigt und kommuniziert werden.
Ich würde vorschlagen, einige Personen außerhalb des Entwicklungsteams als Beobachter zu dem Prozesstreffen einzuladen. Ops oder das mittlere Management könnten ein oder zwei Dinge zu Ihrem Modell zu sagen haben. Die Bedürfnisse der Entwickler sollten priorisiert werden. Wenn sich das Verzweigungsmodell jedoch nicht an die Art und Weise anpassen lässt, wie die Dinge verwaltet werden, sollten Sie es jetzt besser wissen und nicht in ein oder zwei Monaten.
Wenn Sie wirklich große Teams haben, versuchen Sie trotzdem, alle einzubeziehen. Bei sehr großen Teams haben Sie sowieso zwei oder drei Meetings. Laden Sie also Teamleiter in den Raum ein, halten Sie jedoch einen Webcast bereit und informieren Sie alle darüber. Wenn jemand einen Vorschlag oder ein Anliegen hat, kann er dies seinem Teamleiter mitteilen, und wenn es gültig ist, wird es beim zweiten oder dritten Treffen angesprochen.