Skip to main content

Implementieren eines Features aus einem GitHub Problem

Geben Sie ein GitHub Problem, GitHub Copilot-CLIund steuern Sie dann die Unterhaltung, um das Feature zu implementieren.

In diesem Artikel

GitHub Copilot-CLI kann ein GitHub Problem lesen, einen Implementierungsplan vorschlagen und Codeänderungen entwerfen, die den Anforderungen entsprechen. Da der Workflow dialogbasiert ist, können Sie Annahmen korrigieren, auf relevante Dateien verweisen und den Ansatz verfeinern, während GitHub Copilot-CLI arbeitet.

Beispielszenario

Stellen Sie sich vor, Sie arbeiten an einem Plattformteam, das eine interne Node.js Abrechnungs-API verwaltet, die Kundenabonnements unterstützt. Ein Produktmanager öffnet ein Problem, das einen neuen GET /subscriptions/{id}/plan Endpunkt anfordert, der den an ein bestimmtes Abonnement angefügten Plan zurückgibt, zusammen mit Komponententests und einer Aktualisierung der OpenAPI-Spezifikation. Das Problem enthält das gewünschte Antwort-Shape, Fehlerfälle für fehlende oder stornierte Abonnements und einen Link zum vorhandenen /subscriptions/{id} Endpunkt, dem sie als Muster folgen sollen. Sie können das Problem an GitHub Copilot-CLI übergeben und das Grundgerüst für die Route, den Controller und die Tests erstellen lassen und dann einen Pull Request öffnen.

Beispielworkflow

GitHub Copilot-CLI kann das Issue direkt aus GitHub lesen, die Arbeit planen, den Code schreiben, Ihre Tests ausführen und einen Pull Request öffnen.

Das Problem in den Kontext ziehen

Beginnen Sie im Stammverzeichnis des Repositorys, und verweisen Sie auf das Problem nach URL oder owner/repo#number. GitHub Copilot-CLI verwendet den GitHub MCP-Server, um den Problemtext, Kommentare und verknüpfte Elemente abzurufen, und hält diesen Kontext für die restliche Sitzung zur Verfügung.

Text
Read octo-org/billing-api#482 and any issues or PRs it links to. 
Summarize what needs to be implemented before we plan the work.

Erstellen Sie einen Implementierungsplan mit /plan

Wechseln Sie in den Planmodus, damit GitHub Copilot-CLI die Änderung durchdenkt, bevor Dateien geändert werden.

Text
/plan Implement the subscription lookup endpoint described in the issue. 
Follow the same conventions as the existing GET /subscriptions/{id} endpoint.

Hinweis

Die folgende Antwort ist ein Beispiel. Da die Copilot-Chat-Antworten nicht deterministisch sind, erhältst du möglicherweise eine andere Antwort als die hier beschriebene.

GitHub Copilot-CLI gibt einen Plan ähnlich wie:

1. Add a `getPlanForSubscription` method in `src/services/subscriptionService.ts` that reuses the existing billing client, throws `NotFoundError` when the subscription or plan does not exist, and throws `CancelledSubscriptionError` when the subscription has been cancelled.
1. Add a `GET /subscriptions/:id/plan` route in `src/routes/subscriptions.ts`, mirroring the error handling in the sibling `GET /subscriptions/:id` route and mapping `CancelledSubscriptionError` to a `410` response.
1. Update `openapi/subscriptions.yaml` with the new path, response schema, and `404` and `410` responses.
1. Add unit tests in `test/services/subscriptionService.test.ts` and `test/routes/subscriptions.test.ts` covering the success case, missing subscription, cancelled subscription, and missing plan.
1. Run the test suite and update the changelog entry.

Überprüfen Sie den Plan, haken Sie bei allem nach, was nicht stimmt, und bitten Sie GitHub Copilot-CLI, ihn zu überarbeiten, bevor Sie ihn genehmigen. Sie könnten zum Beispiel mit Use the existing error classes in src/errors—NotFoundError for missing subscriptions or plans and CancelledSubscriptionError for cancelled subscriptions rather than introducing new ones antworten, wodurch die betroffenen Schritte aktualisiert werden.

Starten Sie die Implementierung und steuern Sie nach Bedarf

Genehmigen Sie den Plan, um mit dem Codieren zu beginnen. GitHub Copilot-CLI durchläuft die Schritte einzeln, wobei jede Bearbeitung angezeigt wird, bevor sie angewendet wird. Wenn sie in die falsche Richtung geht, unterbrechen Sie sie und lenken Sie sie um.

Nehmen wir zum Beispiel an, GitHub Copilot-CLI fügt in Ihrer getPlanForSubscription-Methode eine neue Datenbankabfrage hinzu, anstatt den Abrechnungs-Client wiederzuverwenden, den Ihr Team als Standard festgelegt hat. Sie können sie anhalten und steuern:

Text
Don't add a new query here. The billing client in 
src/clients/billingClient.ts already exposes a getPlan method. 
Use that and update the service to handle its NotFound response.

GitHub Copilot-CLI überarbeitet den Code und setzt die verbleibenden Planschritte fort.

Generieren und Ausführen von Komponententests

Wenn GitHub Copilot-CLI den Testschritt erreicht, erstellt es Testgerüste, die den Mustern in Ihren vorhandenen Testdateien entsprechen. Für den Plan-Endpunkt könnten beispielsweise Fälle wie diese hinzukommen:

  • Gibt den Tarifdatensatz für ein aktives Abonnement zurück.
  • Gibt zurück 404 , wenn das Abonnement nicht vorhanden ist.
  • Gibt 410 zurück, wenn das Abonnement gekündigt wurde.
  • Gibt 404 zurück, wenn dem Abonnement kein Plan zugeordnet ist.

Nachdem Sie die Tests geschrieben haben, führen Sie sie im Terminal aus, GitHub Copilot-CLI damit Sie die Ergebnisse sofort sehen können.

Text
Run the test suite for the new endpoint and fix any failures.

Wenn ein Test fehlschlägt, GitHub Copilot-CLI liest sie die Fehlerausgabe, aktualisiert die Implementierung und wird erneut ausgeführt, bis die Testsuite grün ist. Überprüfen Sie jeden Fix, um sicherzustellen, dass sie die Ursache adressiert, anstatt sie zu maskieren.

Überprüfen Sie die Änderungen mit /diff

Verwenden Sie /diff, um eine konsolidierte Ansicht der im Verlauf der Sitzung vorgenommenen Änderungen anzuzeigen.

Text
/diff

Wenn etwas nicht richtig aussieht, bitten Sie GitHub Copilot-CLI, es zu überarbeiten, bevor Sie committen. Sie könnten beispielsweise mit Revert the formatting changes in src/routes/subscriptions.ts to only keep the new route handler antworten, um den Diff wieder auf die beabsichtigten Änderungen einzugrenzen.

Öffnen einer Pullanforderung

Nachdem das Feature implementiert, getestet und überprüft wurde, bitten Sie GitHub Copilot-CLI , eine Pull-Anforderung zu öffnen. Es verwendet den GitHub MCP-Server, um den Branch zu pushen und den Pull Request zu erstellen.

Text
Commit the changes on a new branch, push it, and open a pull request 
against main. Link it to octo-org/billing-api#482 and summarize the 
implementation, the tests added, and any follow-up work.

GitHub Copilot-CLI meldet die URL der Pullanforderung zurück, damit Sie sie von dort aus vorwärts verschieben können.

Weiterführende Lektüre