2016-07-18 16 views
1

Unser Team hat die allgemeine PR-Strategie übernommen, bei der jeder Feature-Zweigcode überprüft wird, bevor er mit der Hauptzweigstelle zusammengeführt wird. Wir haben auch die Strategie der häufigen Fusion in der Hauptzweig übernommen, um große Konflikte zu vermeiden, sobald die Branche fertig ist.Code Überprüfung einer Pull-Anforderung mit Master-Zusammenführungen

Das hat gut funktioniert, aber es gibt Probleme mit Branchen, deren Aufbau länger dauert. Ich schaue mir Code an, der einen Zweig rezensiert, der ein paar Wochen dauerte. Es gibt weit über 100 Commits von über 100 Dateien in der PR. Nun, das eigentliche Feature ist wahrscheinlich nur etwa 15% von denen, der Rest ist nur mit dem Hauptzweig verschmilzt.

Gibt es eine Möglichkeit, dies zu reduzieren und nur auf den neuen Code in diesem Zweig konzentrieren, im Gegensatz zu hundert Codezeilen, die tatsächlich Code überprüft und mit dem Hauptzweig verschmolzen?

Antwort

0

Mein Vorschlag für diesen Fall ist rebase. Häufig wird dies in Open-Source-Repositorys abgefragt, in denen der Feature-Zweig möglicherweise nicht mehr mit dem Master-Zweig kompatibel ist.

Es würde bedeuten, dass Sie Ihren Zweigverlauf zurückspulen, setzen Sie ihn auf die Spitze des aktuellen Zweigs, auf den Sie rebasen, und führen Sie Ihre einmaligen Änderungen erneut durch, damit alles auf dem neuesten Stand ist. Vorbehalt: Das Korrigieren von Konflikten kann für lange laufende Branchen verwirrend sein, weil Sie Konflikte in verschiedenen Phasen durch die Reife Ihres Feature Branches beheben müssen - oft vergessen Sie, was Sie getan haben!

Sie können auch den Hauptzweig in Ihren Feature-Zweig einfügen, der die Änderungen oben Ihrer Änderungen übernehmen wird. Ich mag diesen Ansatz nicht, da er Ihre Änderungen unter irrelevantem Code für Ihre Funktion verdeckt, aber es ist einfacher, Konflikte auf diese Weise zu beheben, da sich Ihr Code in diesem Fall in einem "fertigen" Zustand befindet.

0

Sie vergleichen nicht mit featurebranch base, sondern mit mergebase von future merge, das letzte Master-Commit, das zusammengeführt wurde. Auf diese Weise sehen Sie nur, was im Feature-Zweig getan wurde.

Sie können es tun, ohne Suche nach dem Commit, durch git diff master...feature Aufruf (Anmerkung 3 Punkte gibt)

siehe man git-diff