Einführung der GitHub Issues Integration
6. Mai 2020 von Alex Ross, @alexr00
Im Visual Studio Code-Team nutzen wir GitHub Issues, um all unsere Arbeit zu verfolgen. Von unseren detaillierten Iterationsplänen bis hin zu einzelnen Fehlern verfolgen wir alles als GitHub Issues. Angesichts der Bedeutung von Issues für unser Team und andere GitHub-Projekte wollten wir eine GitHub Issues-Integration zu VS Code hinzufügen. Diese Ergänzung ergänzte die GitHub Pull Request-Arbeit, die wir vor über einem Jahr angekündigt haben. Ab der VS Code-Version 1.45 ist diese neue Unterstützung, um Issues und Quellcode näher zusammenzubringen, in der GitHub Pull Requests and Issues-Erweiterung (früher GitHub Pull Requests genannt) verfügbar.
Unser Integrationsansatz
Issues und Pull Requests gehen oft Hand in Hand, daher war die Aufnahme in dieselbe GitHub Pull Requests and Issues-Erweiterung ein logischer Schritt, da für beide, Issues und Pull Requests, dieselbe GitHub API benötigt wird. Wir wollten keine GitHub-Funktionalität direkt in den Kern des VS Code-Editors integrieren, da es viele Quellcodeverwaltungsoptionen gibt. Stattdessen empfehlen wir die Erweiterung, wenn wir feststellen, dass das Repository des Benutzers GitHub verwendet. Durch die Arbeit mit unserer eigenen Erweiterungs-API stellen wir sicher, dass die API die Funktionen enthält, die Erweiterungsautoren benötigen, und andere Repository-Anbieter können ähnliche Integrationen implementieren.
Es war wichtig, dass wir keine übermäßig spezifischen Workflows vorschreiben. Stattdessen war unser Ziel, Issues auf flexible Weise in den inneren Entwicklungszyklus zu integrieren. Zum Beispiel ist die Bereitstellung von mehr Kontext zu einem Issue in einem Code-Kommentar Teil dieses Ziels, aber die vollständige Issue-Verwaltung in VS Code passt nicht so gut. Wir wollen keine Benutzeroberflächen neu erfinden, die GitHub bereits gut beherrscht. Wir möchten Verbindungen herstellen, die noch nicht existieren.
Issues im Code-Kontext
Das Verknüpfen von Issues im Quellcode ist ein normaler Teil unseres Workflows, insbesondere wenn es bestimmte Logik gibt, die schwer zu verstehen ist, oder wenn ein //TODO-Kommentar vorhanden ist, der eine Aktion erfordert. Wenn Sie im VS Code-Repository nach Issue-Referenzen suchen, werden Sie viele erwähnte Issues finden. Während Links auf weitere Informationen verweisen, müssen Sie den Editor verlassen, um mehr zu erfahren. Jetzt, durch diese Issue-Kontextinformationen über Hover-Effekte, müssen Sie Ihren Workflow nicht unterbrechen, um mehr zu erfahren.

Issue-Hover funktionieren auf vollständigen Issue-URLs, Issue-Kommentar-URLs, nach Nummer referenzierten Issues (#1234) und nach owner/repository#1234 referenzierten Issues (z. B. Microsoft/vscode#1234). Wir referenzieren auch oft Benutzer in unserer Codebasis. Die vorgeschlagene API von VS Code enthält viele Entwicklerreferenzen, um deutlich zu machen, wer für die Vorschläge verantwortlich ist.

Issue-Kontext wird typischerweise in Commit-Nachrichten benötigt, um ein Issue zu referenzieren, das der Commit löst, in Quellcodedateien und in Markdown (z. B. einem Changelog). Um diesen Kontext einfach hinzuzufügen, haben wir Vervollständigungsvorschläge für Issues und Benutzer hinzugefügt. In der Git-Commit-Textbox können Sie Ihre Issue-Vervollständigung mit der Einstellung githubIssues.issueCompletionFormatScm formatieren. In Markdown-Dateien werden Issues als Markdown-Link vervollständigt, und in anderen Dateien werden Issues als einfache Issue-Nummer (#1234) vervollständigt.

Die Liste der möglichen Issues ist mit der Einstellung githubIssues.queries konfigurierbar. Wenn Sie also über mehrere Repositories hinweg arbeiten, können Sie Abfragen für diese Issues einbeziehen. Die Abfragen verwenden die GitHub-Suchsyntax. Die Liste der Benutzer umfasst die Mitarbeiter im aktuell geöffneten Repository.

Ein Issue von überall erstellen
Wenn wir einen Fehler in VS Code finden, während wir an Quellcode arbeiten, erstellen wir ein Issue und weisen es dem zuständigen Bereich zu. Oder, wenn der Entdecker des Fehlers auch der Zuständige ist, hinterlassen wir oft einen //TODO-Kommentar als Erinnerung, darauf zurückzukommen. //TODOS, die über die Codebasis verstreut sind, sind schwer zu verfolgen, wenn man viele Mitwirkende hat (obwohl man sicher sagen kann, dass wir es alle schon getan haben), aber das Erstellen eines Issues und das Referenzieren im //TODO ist nachverfolgbar. Um die Hürde und den Kontextverlust beim Erstellen eines Issues während der Arbeit tief im Quellcode zu reduzieren, gibt es einige neue Möglichkeiten, Issues zu erstellen.
Von einem //TODO-Kommentar aus (konfigurierbar mit githubIssues.createIssueTriggers) können Sie ein Issue erstellen und zuweisen, ohne VS Code zu verlassen.

Und aus einer Auswahl können Sie schnell ein Issue mit einem Permalink zurück zum Quellcode erstellen, aus dem es stammt, indem Sie den Befehl GitHub Issues: Create Issue from Selection verwenden. Wenn Sie nur einen Verweis auf Code benötigen, können Sie auch den Befehl GitHub Issues: Copy GitHub Permalink verwenden. Schließlich, wenn es Fehlerinformationen im Terminal gibt, können Sie die Ausgabe einfach in die Zwischenablage kopieren und ein Issue mit GitHub Issues: Create Issue from Clipboard erstellen.
Arbeiten an Issues
Ein gängiger Workflow ist, sich seine Issues anzusehen, eines zur Bearbeitung auszuwählen, einen Branch dafür zu erstellen, einige Commits zu machen und dann die Änderungen mit einem Pull Request zurück in den Main-Branch zu mergen. Aus der neuen Ansicht Issues können Sie genau das tun.

Um verschiedenen Workflows gerecht zu werden, gibt es mehrere konfigurierbare Optionen. Wenn Ihr Workflow nicht die Erstellung eines Topic-Branches beinhaltet, können Sie die Branch-Erstellung mit githubIssues.useBranchForIssues deaktivieren. Wenn Sie ein anderes Benennungsschema für Ihre Branches haben, können Sie die Einstellung githubIssues.issueBranchTitle verwenden. Die in der Ansicht Issues aufgeführten Issues können so konfiguriert werden, dass sie eine benutzerdefinierte Abfrage mit githubIssues.queries verwenden.
Möchten Sie mehr erfahren?
Sie können sich diese Präsentation What every GitHub user should know about VS Code von der GitHub Satellite von Sana Ajani, @sana_ajani, und Burke Holland, @burkeholland, ansehen.
Sie können auch das Thema Working with GitHub lesen, das die GitHub-Integration von VS Code detaillierter beschreibt.
Weiterführend
Derzeit werden die meisten dieser Funktionen nur für Repository-Klone (nicht für Forks) unterstützt. Es gibt also noch Arbeit zu tun, um dies und andere Anwendungsfälle zu unterstützen. Wir würden uns über Ihr Feedback zu dieser Erweiterung freuen, also hinterlassen Sie uns gerne einen Vorschlag in den Issues im Repository der Erweiterung!
Viel Spaß beim Programmieren!
Alex Ross, VS Code-Entwickler @alexr00