現已釋出!閱讀關於 11 月新增功能和修復的內容。

GitHub Issues 整合介紹

2020 年 5 月 6 日,作者 Alex Ross,@alexr00

在 Visual Studio Code 團隊,我們使用 GitHub issues 來跟蹤所有工作。從詳細的迭代計劃到單個錯誤,我們都將其作為 GitHub issues 進行跟蹤。鑑於 issues 對我們團隊和其他 GitHub 專案的重要性,我們希望將 GitHub issues 整合到 VS Code 中。此次新增功能是對我們一年多前宣佈的 GitHub Pull Request 工作的補充。從 VS Code 1.45 版本開始,這項將 issues 和原始碼更緊密地結合在一起的新支援將在 GitHub Pull Requests and Issues 擴充套件(以前名為 GitHub Pull Requests)中提供。

我們的整合方法

Issues 和 pull requests 常常是並存的,因此將它們包含在同一個 GitHub Pull Requests and Issues 擴充套件中是一個合理的步驟,因為 issues 和 pull requests 都需要許多相同的 GitHub API。我們不希望將 GitHub 功能直接新增到核心 VS Code 編輯器中,因為有許多原始碼控制選項。相反,當檢測到使用者開啟的倉庫使用 GitHub 時,我們將推薦該擴充套件。透過使用我們自己的 擴充套件 API,我們確保 API 具有擴充套件作者所需的功能,並且其他倉庫提供商可以實現類似的整合。

重要的是我們不應規定過於具體的工作流。相反,我們的目標是以靈活的方式將 issue 引入到內部開發迴圈中。例如,在程式碼註釋中為 issue 提供更多上下文是該目標的一部分,但將完整的 issue 管理新增到 VS Code 中則不太合適。我們不希望重複造 GitHub 已經做得很好的 UI 的輪子。我們**確實**希望建立尚未存在的連線。

程式碼上下文中的問題

在原始碼中連結到 issue 是我們工作流的正常部分,尤其是在存在一些難以理解的邏輯或需要採取行動的 //TODO 註釋時。如果您在 VS Code 倉庫中搜尋 issue 引用,您會看到許多提及的 issue。雖然連結提供了更多資訊的指標,但要實際瞭解更多資訊,您需要離開編輯器。現在,透過懸停獲取 issue 上下文,您無需中斷流程即可瞭解更多資訊。

Issue Hover

Issue 懸停適用於完整的 issue URL、issue 評論 URL、透過編號引用的 issue (#1234) 和透過 owner/repository#1234 引用的 issue(例如 Microsoft/vscode#1234)。我們還經常在程式碼庫中引用使用者。VS Code 提案 API 有許多開發人員引用,以明確誰對這些提案負責。

User Hover

issue 上下文通常在提交訊息中需要,以引用提交解決的 issue,在原始碼檔案中,以及在 Markdown(例如變更日誌)中。為了輕鬆新增此上下文,我們添加了 issue 和使用者的完成建議。在 Git 提交文字框中,您可以使用 githubIssues.issueCompletionFormatScm 設定來格式化 issue 完成。在 Markdown 檔案中,issue 會完成為 Markdown 連結,在其他檔案中,issue 會完成為簡單的 issue 編號 (#1234)。

Completion Suggestions

可能的 issue 列表可透過設定 githubIssues.queries 進行配置,因此如果您跨多個倉庫工作,您可以包含這些 issue 的查詢。這些查詢使用 GitHub 搜尋語法。使用者列表包括當前開啟倉庫中的協作者。

Issue Queries

隨時隨地建立 issue

當我們在處理某些原始碼時在 VS Code 中發現一個錯誤時,我們會建立一個 issue 並將其分配給該區域的所有者。或者,如果錯誤的發現者也是所有者,我們通常會留下一個 //TODO 註釋,作為提醒稍後回來處理。當有許多貢獻者時,將 //TODO 散佈在整個程式碼庫中很難跟蹤(儘管可以說我們都這樣做過),但建立 issue 並在 //TODO 中引用它是可跟蹤的。為了減少在深入原始碼時建立 issue 的障礙和上下文丟失,有幾種新的方法可以建立 issue

從 //TODO 註釋(可透過 githubIssues.createIssueTriggers 配置),您可以在不離開 VS Code 的情況下建立和分配一個 issue。

Create Issue from TODO

透過選擇,您可以使用“**GitHub Issues: Create Issue from Selection**”命令快速建立一個 issue,並帶有指向其源原始碼的永久連結。如果您只需要一個指向某些程式碼的指標,您還可以使用“**GitHub Issues: Copy GitHub Permalink**”命令。最後,如果終端中存在失敗資訊,您只需將輸出複製到剪貼簿,然後使用“**GitHub Issues: Create Issue from Clipboard**”建立 issue。

處理問題

常見的工作流程是檢視您的 issue,選擇一個進行處理,建立一個分支進行工作,進行一些提交,然後透過拉取請求將您的更改合併回主分支。從新的“**Issues**”檢視中,您可以準確地執行此操作。

Work on an Issue

為了適應更多工作流,您可以配置多個選項。如果您的流程不涉及建立主題分支,您可以使用 githubIssues.useBranchForIssues 停用分支建立。如果您的分支有不同的命名方案,您可以使用 githubIssues.issueBranchTitle 設定。Issues 檢視中列出的 issue 可以配置為使用自定義查詢 githubIssues.queries

想了解更多?

您可以觀看 Sana Ajani @sana_ajani 和 Burke Holland @burkehollandGitHub Satellite 上的**每個 GitHub 使用者都應該瞭解的 VS Code** 演講。


您還可以閱讀 使用 GitHub 主題,其中更詳細地描述了 VS Code 的 GitHub 整合。

未來展望

目前,這些功能中的大多數僅支援倉庫克隆(而非分支),因此還需要做更多工作來支援這一點和其他用例。我們很樂意聽取您對該擴充套件的反饋,因此請隨時在擴充套件的 倉庫中的 issues 中給我們留下建議!

編碼愉快!

Alex Ross,VS Code 開發人員 @alexr00

© . This site is unofficial and not affiliated with Microsoft.