Skip to main content

Stapelcodeänderungen in Pullanforderungen

Erstellen Sie einen Stapel kleiner, abhängiger Pullanforderungen, die schnell überprüft werden können.

Hinweis

Dieses Feature befindet sich in der öffentlichen Vorschau und kann geändert werden.

Große Pullanforderungen sind schwierig zu überprüfen und Engpässe zu erstellen, insbesondere wenn Sie in kurzer Zeit ein hohes Codevolumen generieren. Die Qualität der Überprüfung verschlechtert sich auch, wenn die Größe der Pull-Anforderung zunimmt. Prüfer können das Ergebnis überspringen, Probleme verpassen oder die Pull-Anforderung zurücklassen, bis sie veraltet wird und Zusammenführungskonflikte entwickelt.

Gestapelte Pullanforderungen behalten große Codeänderungen zur Überprüfung bei.

Ein Stapel ist eine Reihe von Pullanforderungen im selben Repository, in dem jede Pullanforderung auf die Verzweigung der Pullanforderung darunter ausgerichtet ist und eine geordnete Kette bildet, die in einer einzelnen Verzweigung landet, in der Regel Ihre Hauptzweige. Anstelle einer großen Pullanforderung erhalten Sie eine Reihe kleinerer Pullanforderungen. Da jede Pullanforderung über einen eigenen diff mit Relevanz verfügt, können Teamkollegen jede Ebene unabhängig überprüfen und genehmigen.

In diesem Lernprogramm erfahren Sie, wie Sie gestapelte Pullanforderungen verwenden, um ein Feature in einzeln bearbeitbaren Ebenen zu erstellen. In unserem Beispiel überlegen wir, wie Sie einer App eine Benutzerauthentifizierung hinzufügen. Wir verwenden die gh stack Erweiterung in GitHub CLI.

Voraussetzungen

Um diesem Lernprogramm zu folgen, müssen Sie die Erweiterung und die gh stack Erweiterung installierenGitHub CLI. Sie benötigen Folgendes:

  • GitHub CLI (gh) 2.90.0 oder höher und Git 2.20 oder höher.
    • Authentifizieren GitHub CLI mit gh auth login.
  • Ein GitHub Repository, an das Sie pushen können.

GitHub CLIInstallieren Sie in , die gh stack Erweiterung.

gh extension install github/gh-stack

1. Entwerfen eines Stapels vor dem Generieren von Code

Ein guter Stapel ist wie das Bauen eines Hauses: Beginnen Sie mit einer starken Grundlage, rahmen Sie die Wände, installieren Sie kabelgebunden, und beenden Sie dann die Trockenmauer. Jede Ebene basiert auf der darunter stehenden Ebene. Am Ende sollte ein Prüfer in der Lage sein, die Pullanforderungen von unten nach oben zu lesen und der Entwicklung des Features zu folgen.

  • Teilen Sie das Feature in Ebenen auf. Jede Ebene sollte eine einzelne, kohärente Änderung sein, die eigenständig überprüft werden kann.
    • Halten Sie jede Ebene klein genug, damit die Pullanforderung schnell gelesen wird. Wenn sich eine Ebene wie eine lange Beschreibung zum Überprüfen fühlt, ist sie wahrscheinlich zu groß.
    • Entscheiden Sie sich selbst über die Grenzen. Sie besitzen die Form des Stapels.
  • Ordnen Sie die Ebenen nach Abhängigkeit an. Grundlegende Änderungen werden unten angezeigt. Alles, was von ihnen abhängt, geht höher. Für die Authentifizierung kann folgendes sein:
    • Ebene 1: Datenmodell und Migration
    • Layer 2: CRUD-Endpunkte
    • Layer 3: JWT Middleware und Guards
    • Layer 4: Integrations- und Komponententests

2. Erstellen Sie zuerst die untere Ebene

Starten Sie den Stapel mit der Grundlage. Alles oben hängt davon ab, dass diese Ebene richtig ist.

  • Erstellen Sie den Stapel, und erstellen Sie die erste Ebene basierend auf Ihrem Plan. Erstellen Sie es mit gh stack init BRANCH-NAME-1, erwägen Sie die Verwendung eines Präfixes, um Verzweigungsnamen übersichtlich zu halten.
  • Überprüfen Sie die Änderung selbst, bevor Sie fortfahren. Ein Fehler in der unteren Ebene verteilt sich auf jede Verzweigung darüber, also geben Sie ihm eine Überprüfung, bevor Sie fortfahren.

3. Stapeln Sie jede neue Codeebene oben

Wenn die Grundlage eingerichtet ist, erstellen Sie den Rest des Features jeweils eine Ebene.

  • Fügen Sie die nächste Ebene hinzu, und implementieren Sie sie im Kontext der nachfolgenden Ebenen. Fügen Sie oben im Stapel eine Verzweigung hinzu gh stack add BRANCH-NAME-NEXT , und übernehmen Sie die Arbeit dort.
  • Wenn eine Schicht zu groß wird, überlegen Sie, ob sie außerhalb ihres Plans gedrift wurde oder ob Sie tatsächlich zwei Ebenen anstelle einer schicht benötigen.
  • Erstellen Sie neue Verzweigungen für jede Ebene, sodass jede Verzweigung ein sauberes, eigenständiges Diff bleibt.
  • Wenn Sie bereit sind, Pullanforderungen zu erstellen, übermitteln Sie Ihren Stapel mit gh stack submit.
  • Lassen Sie jede Pullanforderung eigenständig stehen. Ein fokussierter Titel und eine präzise, aussagekräftige Beschreibung der Ebene reicht in der Regel aus.

4. Überprüfen Sie die Pullanforderungen selbst, bevor Sie eine Überprüfung beantragen

Jede Ebene ist klein und erleichtert auch die Selbstüberprüfung. Geben Sie jeden Zweig weiter, bevor Sie Teamkollegen einbeziehen. Prüfer sollten Bereits vertrauenswürdige Änderungen erhalten.

  • Führen Sie Ihre Tests, Linters und Codeüberprüfungen auf jeder Verzweigung aus, um jede Ebene anhand Ihrer Standards zu überprüfen, bevor Sie Rezensionen anfordern.

5. Fordern Sie Rezensionen für den Stapel an, beginnend am unteren Rand

Mit den erstellten Ebenen erhalten Prüfer kleine Diffs anstelle einer großen Codewand.

  • Wenn die Abhängigkeiten stark integriert sind, bitten Sie nach Rezensionen, die am Ende des Stapels beginnen, damit Sie Änderungen am Stapel vor nachfolgenden Überprüfungen integrieren können.
  • Wenn Sie Rezensionen von separaten Personen für verschiedene Ebenen benötigen, können Prüfer parallel arbeiten. Eine Person kann das Datenmodell überprüfen, während eine andere die Endpunkte überprüft, und keine arbeite durch Überprüfung des gesamten Features.

6. Feedback durchlaufen

Das Feedback wird einzeln auf Ebenen und nicht auf das gesamte Feature gelandet. Mithilfe von Stapeln können Sie die richtige Schicht an der Stelle korrigieren und die Änderung nach oben tragen.

  • Überarbeiten Sie die Ebene, die ein Bearbeiter gekennzeichnet hat. Wechseln Sie zur rechten Verzweigung, nehmen Sie die Änderung vor, und übernehmen Sie sie dort.
  • Behalten Sie jeden Fix auf der Ebene bei, zu der er gehört. Eine Änderung, die an der falschen Verzweigung vorgenommen wurde, kann Fehler verwechseln und Fehler aufsteigen.
  • Navigieren in Verzweigungen mit gh stack down, gh stack upoder gh stack checkout BRANCH-NAME. Führen Sie dann einen Commit für Ihre Änderungen aus, führen gh stack rebase --upstack Sie die Oben beschriebenen Verzweigungen neu aus, und führen Sie dann gh stack push Änderungen am Stapel durch.

7. Zusammenführen von der unteren Ebene

Ein Stapel wird in der Reihenfolge zusammengeführt, beginnend von der Ebene, die auf Ihre Hauptzweige zeigt. Verbinden Sie Alle Ebenen auf einmal oder einzeln, und GitHub automatisch auf die nächste Ebene ausgerichtet, die auf den Hauptpunkt zeigt.

  • Führen Sie den Stapel einzeln zusammen, der von unten nach oben oder von einer beliebigen Stelle im Stapel funktioniert, und alle Verzweigungen unterhalb der Pullanforderung, die Sie zusammenführen, werden von unten nach oben zusammengeführt.
  • Jeder Layer-Diff bleibt im Verhältnis zu seinem übergeordneten Element genau gleich, nur die Basisänderungen, wodurch es einfach ist, eine Ebene gleichzeitig zusammenzuführen, ohne dass sich dies auf laufende Arbeit oder Rezensionen auswirkt.
  • Verwenden Sie eine Seriendruckwarteschlange, sodass jede Ebene nach der Genehmigung und deren Überprüfungsdurchlauf in der reihenfolge zusammenführt. Sie müssen nicht gleichzeitig auf den gesamten Stapel warten.

Sobald die oberste Ebene zusammengeführt wird, ist das gesamte Feature gelandet. Jedes Stück wurde effektiver als kleine, absichtliche Änderung statt einer großen Pullanforderung überprüft.

Weiterführende Lektüre