Derzeit arbeite ich an einer wirklich großen Pull-Anfrage. Um Code-Reviews irgendwie überschaubar zu halten, bestand die Idee darin, die gesamte Pull-Anfrage in isolierte Teile aufzuteilen, die jedoch voneinander abhängen.
Ein Beispiel wäre:
- Pull-Anforderung 1 : Schnittstellen erstellen: Schnittstelle A & B und Code umstrukturieren
- Pull-Anforderung 2 : Implementierung von Schnittstelle A und Tests (abhängig von Pull-Anforderung1)
- Pull-Anforderung 3 : Implementierung und Tests von Schnittstelle B (abhängig von Pull-Anforderung2)
- Pull-Anforderung 4 : Gemischter Test der Implementierungen (abhängig von 2 + 3)
Gibt es in Github eine Möglichkeit, alle vier Pull-Anforderungen gleichzeitig mit Abhängigkeiten abzulegen?
git
github
pull-request
fyr
quelle
quelle
Antworten:
Soweit ich sehen kann, ist dies unmöglich und meiner Meinung nach ist es einer der Hauptnachteile von GitHub im Vergleich zu anderen Tools zur Codeüberprüfung. Gerrit richtet automatisch abhängige Codeüberprüfungen ein, wenn Sie voneinander abhängige Commits ausführen. In Phabricator ist dies eher schmerzhaft, aber dennoch möglich.
Es ist auch gut zu bedenken, dass es mehrere Möglichkeiten gibt, wie GitHub-PRs verwendet werden. Die normale Open-Source-Kollaborationsmethode besteht darin, ein Repo zu teilen und eine repoübergreifende Pull-Anfrage zu senden. In anderen Fällen (z. B. innerhalb einer Organisation) können Sie Pull-Anfragen für Diffs alle innerhalb desselben Repositorys senden. Ich denke, innerhalb eines einzelnen Repositorys ist es vernünftiger, etwas in Richtung abhängiger Pull-Anfragen zu bekommen, da Sie die Commit / Branch-Struktur innerhalb dieses Repos einrichten können.
In diesem Blog-Beitrag wird beschrieben, wie Sie einige Vorteile von abhängigen Pull-Anforderungen nutzen können. Ich denke, dass alle Commits im selben Repo sein müssen: http://graysonkoonce.com/stacked-pull-requests-keeping-github-diffs-small /.
Eine Zusammenfassung:
Sie müssen alle Änderungen auf einmal landen, da GitHub die Aktualisierung des Zielzweigs von PRs nicht unterstützt. Im Beispiel wurden alle 5 Codeüberprüfungen als ein einziges Commit gelandet.GitHub unterstützt jetzt die Aktualisierung des Basiszweigs eines PR, sodass die PRs einzeln gelandet werden können.Dieser Ansatz scheint für riesige Änderungen in Ordnung zu sein, die am besten in kleineren Teilen überprüft werden können (obwohl das Beibehalten einer n-Ebenen-tiefen Verzweigungshierarchie im Vergleich zu so etwas ein Problem ist
git rebase -i
), aber es erlaubt nicht wirklich eine "Codeüberprüfungs-Pipeline". Hier können Sie abhängige Unterschiede in verschiedenen Überprüfungsstufen haben und frühere Unterschiede bei der Überprüfung landen.Einige andere Internetquellen, die ebenfalls die Einschränkung hervorrufen:
https://www.quora.com/Is-there-a-good-system-for-adding-multiple-pull-requests-to-GitHub
https://muffinresearch.co.uk/how-do-you-deal-with-dependent-branches-on-github/
Nach meinem Verständnis versuchen Benutzer von GitHub-PRs im Allgemeinen nur, ihren Workflow so zu strukturieren, dass sie sich nicht auf abhängige Codeüberprüfungen verlassen. Einige Beispiele:
quelle