Unser Team hat gerade von FogBugz & Kiln / Mercurial zu Jira & Stash / Git gewechselt. Wir verwenden das Git Flow-Modell zum Verzweigen und fügen Nebenaufgabenzweige von Feature-Zweigen hinzu (in Bezug auf Jira-Nebenaufgaben von Jira-Features). Wir verwenden Stash, um einen Prüfer zuzuweisen, wenn wir eine Pull-Anforderung zum Zusammenführen zurück in den übergeordneten Zweig erstellen (normalerweise entwickeln, aber für Unteraufgaben zurück in den Feature-Zweig).
Das Problem besteht darin, dass selbst bei optimaler Planung und Aufschlüsselung von Feature-Fällen mehrere Entwickler gemeinsam an demselben Feature arbeiten, z. B. im Front-End und im Back-End, wenn sie an voneinander abhängigem Code arbeiten in getrennten Zweigen blockiert ein Entwickler den anderen.
Wir haben versucht, bei der Entwicklung zwischen den Zweigen der anderen zu wechseln. Wir haben auch versucht, lokale Integrationszweige zu erstellen, die jeder Entwickler aus mehreren Zweigen ziehen kann, um die Integration während der Entwicklung zu testen. Schließlich, und dies scheint möglicherweise das Beste für uns bisher zu sein, obwohl wir mit ein wenig mehr Aufwand versucht haben, einen Integrationszweig von Anfang an aus dem Feature-Zweig zu erstellen. Wenn eine Teilaufgabenverzweigung (außerhalb der Featureverzweigung) für eine Pull-Anforderung und eine Codeüberprüfung bereit ist, führen wir diese Änderungssätze auch manuell in dieser Featureintegrationsverzweigung zusammen. Dann können alle interessierten Entwickler aus diesem Integrationszweig in andere abhängige Subtask-Zweige ziehen. Dies verhindert, dass jemand auf einen Zweig wartet, auf den er angewiesen ist, um die Codeüberprüfung zu bestehen.
Ich weiß, dass dies nicht unbedingt ein Git-Problem ist - es hat mit der Arbeit an voneinander abhängigem Code in mehreren Zweigen zu tun, gemischt mit unserem eigenen Arbeitsprozess und unserer eigenen Kultur. Wenn wir nicht die strikte Codeüberprüfungsrichtlinie für Develop (True Integration Branch) hätten, könnte Entwickler 1 zusammengeführt werden, um zu entwickeln, von dem Entwickler 2 ausgehen kann. Eine weitere Schwierigkeit besteht darin, dass wir im Rahmen des Codeüberprüfungsprozesses einige vorläufige Tests durchführen müssen, bevor wir die Funktion an die Qualitätssicherung übergeben. Dies bedeutet, dass auch Front-End-Entwickler 1 direkt vom Zweig von Back-End-Entwickler 2 abzieht, sobald sie verfügbar sind Los, wenn Back-End-Entwickler 2 fertig ist und seine Pull-Anforderung eine Woche lang in der Codeüberprüfung sitzt, kann Front-End-Entwickler 2 seine Pull-Anforderung / Codeüberprüfung technisch nicht erstellen, weil sein Codeüberprüfer dies nicht kann Test, weil Back-End-Entwickler 2 '
Unterm Strich befinden wir uns in diesem Fall in einer viel serielleren als in einer parallelen Herangehensweise, je nachdem, welchen Weg wir gehen, und möchten einen Prozess finden, um dies zu vermeiden.
Das Letzte, was ich erwähnen möchte, ist, dass wir Code zwischen Zweigen teilen, die noch nicht überprüft und finalisiert wurden. Wir verwenden im Wesentlichen den Beta-Code anderer. Bis zu einem gewissen Grad denke ich, dass wir das nicht vermeiden können und bereit sind, dies bis zu einem gewissen Grad zu akzeptieren.