將程式庫加入工作區
本指南說明如何把 Git 檢出註冊到工作區、重新索引它,之後再將它移除。
程式庫是以工作區為範圍的。沒有全域註冊表,也沒有連結步驟:加入程式庫與把它放進工作區,是同一件事。同一個檢出註冊到兩個工作區,會變成兩筆各自獨立、帶有兩個不同 id 的資料列——跨工作區而言,程式庫的身分是它的檔案系統路徑,永遠不是它的 id。
開始之前
標題為「開始之前」的章節資料夾只有在同時符合以下三項時才能註冊:
- 它位於一個 git 工作樹內。
- 該工作樹設有一個
origin遠端。 - 該
origin遠端指向受支援的程式碼託管平台:github.com、gitlab.com 或 bitbucket.org。
其他情況一律會在註冊當下被拒絕,並附上明確訊息:「資料夾不在 git 工作樹內。」、「此程式庫未設定 origin 遠端。」或「origin 遠端未託管於受支援的程式碼託管平台(github.com、gitlab.com、bitbucket.org)。」。沒有僅限本機的模式。
程式碼託管平台是從遠端讀取並存放於程式庫上的——你永遠不需要挑選它。一個工作區可以同時容納來自這三者的程式庫,而每個都會透過各自的 API 與自己的憑證溝通。GitLab 的巢狀命名空間會被保留,因此 gitlab.com/group/subgroup/project 註冊後的所有者為 group/subgroup,名稱為 project。
該資料夾還必須位於承載 cc_server 的那部機器上,且在其中一個 --repo-roots 目錄之內。該允許清單預設為伺服器使用者的主目錄,而越過某個根目錄向上瀏覽會被拒絕。
註冊檢出
標題為「註冊檢出」的章節- 開啟 設定 → 工作區 → 程式庫(
/workspaces/<id>/settings/workspace/repositories)。 - 按一下 新增程式庫。
該對話框是一個可導覽的瀏覽器,瀏覽的是伺服器的檔案系統,而不是你自己的。桌面端、網頁端與手機端的流程完全相同,因為原生資料夾選取器會在錯誤的機器上選取資料夾。
- 在伺服器已設定的根目錄範圍內導覽。屬於 git 檢出的資料夾會被標示出來。
- 勾選任意數量的資料夾。選取狀態會在你導覽期間一直保留,因此你可以從多個資料夾收集檢出。
- 以單一批次將它們註冊。
單一項目失敗絕不會拖垮批次中的其餘項目——你會取得已建立的 id,以及每個被拒絕項目各自的按路徑錯誤。重新註冊此工作區中已存在的路徑,會傳回現有的程式庫,而不會多建立一個重複項。
每個已註冊的程式庫都會出現在清單中,附有它的 owner/name、一個標明其程式碼託管平台的徽章,以及它在伺服器上的路徑。GitHub 程式庫亦會顯示所有者的頭像;其他程式碼託管平台沒有可推測的所有者頭像 URL,因此會退回顯示姓名首字母。
在混合了多個平台的工作區中,程式碼託管平台徽章很重要:兩個程式庫可以在不同平台上都叫 acme/web,而它們的行為並不相同——一次審查能做些什麼,以及連結會指向哪裏。
接下來會發生什麼
標題為「接下來會發生什麼」的章節註冊會觸發一個範圍限定於此工作區的 RepoAdded 事件,它會為該檢出啟動 index_code 管線。正是它填充了程式碼圖,讓搜尋與影響分析有內容可回答。
只有語言已有隨附文法的檔案才會被索引(Dart、JavaScript、TypeScript、TSX、PHP、Python、Rust、Zig、C、C++、Go、Java、Ruby、C#、Swift、Kotlin、R、Assembly、MATLAB 與 Ada)。參見以程式碼圖搜尋程式碼。
重新索引程式庫
標題為「重新索引程式庫」的章節每一列都帶有一個 索引程式碼 按鈕。按一下它,即可為該檢出重新執行索引器;執行期間,按鈕會變成顯示已完成檔案數對總數的進度讀數,並附有取消控制項。完成後,它會定格成一個帶有符號數量的勾號;若執行失敗,則顯示警告。
重新排列程式庫
標題為「重新排列程式庫」的章節拖曳某一列上的控點。你設定的順序,就是應用程式內每個程式庫清單讀回時所依循的順序。
修正 GitHub 連結
標題為「修正 GitHub 連結」的章節某一列上的連結圖示會開啟一個編輯器,用來編輯該程式庫的 GitHub 所有者與程式庫名稱——當遠端被重新命名或轉移時很有用。
移除程式庫
標題為「移除程式庫」的章節- 開啟 設定 → 工作區 → 程式庫。
- 按一下該列上的垃圾桶圖示。
- 確認「要從工作區移除程式庫嗎?」
對話框會說明它會做什麼:「name 將從此工作區移除。磁碟上的本機檔案不會更動。」
移除會從此工作區刪除該程式庫資料列,並串聯清除它的程式碼圖資料列——符號、邊、檔案與索引檢查點——以及它上面按成員劃分的每一項程式庫授權、它與空間的連結,還有它的隔離檢出記錄。同一個檢出若註冊在另一個工作區,就是一筆獨立資料列,不受影響。那些記錄所指向的磁碟 worktree,不會因為這次刪除而被拆除。