Ich suche nach "Best Practices" für Rollen und Verantwortlichkeiten, insbesondere für die Zusammenführung von Entwicklungszweigen zu Trunk (oder Main). Grundsätzlich suche ich Munition, um meiner Sache zu helfen.
Lassen Sie mich beschreiben, was ich vor mir habe. Ich bin der Hauptentwickler (Eigentümer) einer bestimmten Anwendung. Unser Unternehmen ist kürzlich von VSS (wo ich der Administrator der VSS-Datenbank war, in der meine Anwendung gespeichert war) zu TFS gewechselt (wo ich nur Berechtigungen für Entwicklungszweige habe, die von unserem "Operations" -Team erstellt wurden). In früheren Jobs war ich TFS-Administrator, daher kenne ich mich mit TFS und MSBuild aus.
Ich habe kein Problem mit der verwendeten Verzweigungs- und Zusammenführungsstrategie (Hauptzweig, bei dem Fehler- / Projektentwicklungszweige nach Bedarf erstellt, wieder zum Hauptzweig zusammengeführt und dann zu einem Release-Zweig befördert werden). Die Probleme, die ich habe, sind:
Ich kann keine eigenen Zweige erstellen. Ich muss eine TFS-Aufgabe erstellen, damit ein Mitglied des "Operations" -Teams den Zweig für mich erstellt.
Ich kann nicht von Main zu meinem Entwicklungszweig zusammengeführt werden. Ich muss eine TFS-Aufgabe erstellen, damit ein "Operations" -Teammitglied die Zusammenführung durchführt, und dann hoffe, dass er auf keine Änderungen meines Teams "tritt", da der "Ops-Typ" möglicherweise ein Entwickler ist oder nicht wenig bis gar keine Kenntnis des Codes, den er zusammenführt.
Ich kann nicht von der Entwicklung zum Main verschmelzen. Wieder muss ich eine TFS-Aufgabe erstellen, damit der "Ops-Typ" die Zusammenführung durchführt, in der Hoffnung, dass er es richtig macht. Dann muss ich eine weitere TFS-Aufgabe erstellen, um sie wieder in meinem Zweig zusammenzuführen, damit ich alle Probleme beheben kann, die durch die Zusammenführung eines Nicht-Entwicklers mit Main aufgetreten sind.
Ich kann keine MSBuild-Skripte erstellen oder bearbeiten. Wieder muss ich mit dem "ops" -Team arbeiten, das neu in MSBuild ist, damit nur die grundlegendsten Build-Aufgaben ausgeführt werden können. (Vergessen Sie alles Komplexe oder verbieten Sie dem Himmel eine benutzerdefinierte Aufgabe).
Ich kann kein MSBuild-Skript ausführen. Auch dies kann nur das "Ops" -Team.
Um das Ganze abzurunden, handelt es sich normalerweise um eine "Offshore" -Ressource, die die angeforderten Aufgaben ausführt. Selbst wenn ich die Aufgabe am frühen Morgen für (Verzweigen / Zusammenführen / Erstellen) erstelle, wird sie wahrscheinlich nicht abgeschlossen bis zu diesem Abend.
Jetzt habe ich kein Problem damit, dass das "Operations" -Team die Release-Zweige verwaltet. Alles, was sie tun, ist (im Grunde), die neueste Version von Main zu nehmen und sie in den Release-Zweig zu befördern. Solange "Main" stabil und bereit ist, ist der Release-Zweig gut.
Meiner Meinung nach sollten technische Leads (wie ich) für die Wartung des Trunks ("Main") und die Zusammenführung zu / von den Entwicklungszweigen verantwortlich sein. Der Teamleiter sollte auch die Möglichkeit haben, MS Build-Skripts zum Erstellen und Bereitstellen in der Integrationstestumgebung zu generieren.
Kann mich jemand auf ein Best Practices-Dokument verweisen, das mir hilft, meinen Fall zu beweisen? Alle meine Suchen haben nur Best Practices in Bezug auf die Techniken des Verzweigens und Zusammenführens ergeben, und keine Erwähnung der WHO sollte diese Verzweigung / Zusammenführung durchführen.
quelle
WHO should be performing said branching/merging.
ist eine interne organisatorische Entscheidung. Nicht wirklich etwas, bei dem wir Ihnen helfen könnten ...Antworten:
Ich gehe allgemein davon aus, dass jedes Mitglied des Entwicklungsteams in der Lage sein sollte, Aktionen für den Baum auszuführen, vorausgesetzt, diese Aktionen führen nicht zum Start einer Produktionsbereitstellung. In Fällen, in denen ein bestimmter Zweig / Tag / Repository als Quelle für automatisierte Bereitstellungen fungiert, ist es sinnvoll, eine angemessene Änderungskontrolle oder Eintrittsbarrieren einzuführen. Ich würde Entwickler ermutigen, Zweige zu erstellen und die Build-Skripte zu verbessern. Ich würde Wege finden, um Entwicklern bei Bedarf Zugang zur Produktion zu verschaffen. Ein Teil des Punktes der Quellcodeverwaltung ist, dass es ein effektiver magischer Radiergummi für Fehler ist - das Schlimmste, was Sie tun müssen, ist, ein oder zwei Umdrehungen zurückzusetzen und davon abzweigen.
Leider klingt dies nicht nach dem Ansatz, den sie hier gewählt haben. Um dies zu besiegen, müssen Sie meiner Meinung nach einige Aspekte abdecken:
a) Beweisen Sie, dass diese Richtlinien sich nachteilig auf die Entwicklung auswirken. Protokollieren Sie die gesamte Zeit, die Sie damit verbringen, auf Operationen zu warten, um an etwas zu arbeiten. Dies allein sollte ein vernünftiges Management darüber verkaufen, warum dies eine schlechte Politik ist.
b) Machen Sie Freunde in Ops - vielleicht gibt es einen Grund für diese Richtlinie. Vielleicht könnte diese Argumentation effektiver angegangen werden.
Hoffe das hilft.
quelle
Praktiken, die ich gesehen habe, sind:
Jeder kann nach Herzenslust Arbeitszweige erstellen. Ein Entwickler muss in der Lage sein, einen Feature-Zweig in der Sekunde zu erstellen, in der er feststellt, dass es sinnvoll ist, seine aktuellen Arbeiten zu speichern. Weil sie es am Ende des Tages sichern wollen / sollten, es mit einem anderen Teammitglied teilen wollen, müssen sie vor Änderungen in der Hauptleitung oder was auch immer geschützt werden.
Jeder kann absolut alles mit Entwicklungszweigen machen. Entwickler müssen in der Lage sein, von main zusammenzuführen, sobald ein anderer Entwickler ihnen mitteilt, dass etwas, das sie benötigen, in main integriert wurde.
Für die Zusammenführung mit main (Integration) gibt es drei Optionen:
Wer eine Funktion vorbereitet, sollte das Build-Skript anpassen. Ich bin mir aber nicht sicher, wie es mit TFS funktioniert. In den Systemen, die ich verwendet habe, war das Build-Skript immer nur eine versionierte Datei, daher haben die Entwickler es wie jedes andere bearbeitet und es wurde zusammen mit allem anderen integriert.
Wenn es einen bestimmten Integrator gibt, kümmern sie sich normalerweise darum, zu definieren (welches Skript ausgeführt werden soll) und die Builds zu starten. Andernfalls erledigt dies entweder der Teamleiter, das designierte Teammitglied oder jeder hat Berechtigungen, und die Delegierten des Teamleiters richten von Fall zu Fall bestimmte Builds ein und starten sie.
In keinem Fall sollten die oben genannten Operationen einen Bediener außerhalb des Teams erfordern. Der Operator wird nur zum Einrichten der Berechtigungen, Erstellen von Replikaten usw. benötigt.
quelle
Egal, "Best Practices" (bitte beachten Sie), dies ist ein Managementproblem. Grundsätzlich können Sie Ihre Arbeit aufgrund der Ihnen auferlegten Einschränkungen nicht ordnungsgemäß ausführen.
Es spielt eigentlich keine Rolle, was "Best Practice" ist - dies ist ein einfaches, nachweisbares Problem, das sich auf die Produktivität von Ihnen und Ihrem Team auswirkt, und Sie müssen es auf dieser Grundlage mit Ihrem Linienmanagement aufnehmen.
Ich kann sehen , dass ein Best - Practice - Dokument könnte schwingend (aber nur vielleicht ) bei dem Versuch , eine Hilfe sein , um sie davon zu überzeugen , aber viel besser ist die Vorstellung , dass Sie DEV Team - Mitglieder auf ihren Händen sitzen muss haben , während in einer anderen Zeitzone für jemanden warten ihre Handlung zusammenzubringen, es sei denn, die Prozesse werden verbessert / rationalisiert.
Und seien Sie nicht zu konfrontativ - so viel wie alles, was Sie wissen möchten, warum die Beschränkungen bestehen, was die Rechtfertigung ist ...
quelle