名稱

Scalar - 一個用於管理大型 Git 倉庫的工具

概要

scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]
	[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<enlistment>]
scalar list
scalar register [--[no-]maintenance] [<enlistment>]
scalar unregister [<enlistment>]
scalar run ( all | config | commit-graph | fetch | loose-objects | pack-files ) [<enlistment>]
scalar reconfigure [--maintenance=(enable|disable|keep)] [ --all | <enlistment> ]
scalar diagnose [<enlistment>]
scalar delete <enlistment>

描述

Scalar 是一個倉庫管理工具,它優化了 Git 以用於大型倉庫。Scalar 透過配置高階 Git 設定、在後臺維護倉庫以及幫助減少網路傳輸的資料來提高效能。

Scalar 的一個重要概念是“enlistment”(部署/登記目錄):這是專案的頂級目錄。它通常包含一個名為 src/ 的子目錄,這是一個 Git 工作區(worktree)。這鼓勵了跟蹤檔案(在 src/ 內部)與未跟蹤檔案(如構建產物,在 src/ 外部)之間的分離。當用 Scalar 註冊一個名稱不是 src 的現有 Git 工作區時,該 enlistment 將與該工作區相同。

scalar 命令實現了各種子命令,以及根據子命令的不同選項。除了 clonelistreconfigure --all 之外,所有子命令都期望在 enlistment 內部執行。

以下選項可以在子命令之前指定

-C <目錄>

在執行子命令之前,更改工作目錄。此選項模仿 git[1] 的相同選項。

-c <鍵>=<值>

在執行指定子命令期間,配置此設定。此選項模仿 git[1] 的相同選項。

命令

克隆

clone [<選項>] <URL> [<enlistment>]

克隆指定倉庫,類似於 git-clone[1]。預設情況下,只克隆提交和樹物件。完成後,工作區位於 <enlistment>/src

稀疏檢出(sparse-checkout)功能已啟用(除非與 --full-clone 一起執行),並且僅存在頂級目錄中的檔案。使用 git sparse-checkout set 擴充套件要檢視的目錄集,或使用 git sparse-checkout disable 擴充套件到所有檔案(有關更多詳細資訊,請參閱 git-sparse-checkout[1])。您可以使用 git ls-tree HEAD[:<目錄>] 探索稀疏檢出之外的子目錄。

-b <名稱>
--branch <名稱>

不檢出克隆倉庫的 HEAD 指向的分支,而是檢出 <名稱> 分支。

--[no-]single-branch

僅克隆指向單個分支尖端的歷史記錄,該分支要麼由 --branch 選項指定,要麼是主分支遠端的 HEAD 所指向的分支。

隨後對結果倉庫的 fetch 操作將只更新用於初始克隆的該分支的遠端跟蹤分支。如果在進行 --single-branch 克隆時,遠端的 HEAD 沒有指向任何分支,則不會建立遠端跟蹤分支。

--[no-]src

預設情況下,scalar clone 將克隆的倉庫放置在 <enlistment>/src 目錄中。使用 --no-src 將克隆的倉庫直接放置在 <enlistment> 目錄中。

--[no-]tags

預設情況下,scalar clone 將獲取遠端廣告的標籤物件,未來的 git fetch 命令也會這樣做。使用 --no-tags 可避免在 scalar clone 中獲取標籤,並配置倉庫以在將來避免獲取標籤。要在使用 --no-tags 克隆後獲取標籤,請執行 git fetch --tags

--[no-]full-clone

預設情況下會初始化稀疏檢出。此行為可以透過 --full-clone 關閉。

--[no-]maintenance

預設情況下,scalar clone 會將 enlistment 配置為使用 Git 的後臺維護功能。使用 --no-maintenance 跳過此配置。

列表

list

列出當前由 Scalar 註冊的 enlistment。此子命令不需要在 enlistment 內部執行。

註冊

register [<enlistment>]

將 enlistment 的倉庫新增到註冊倉庫列表中,並啟動後臺維護。如果未提供 <enlistment>,則註冊與當前工作目錄關聯的 enlistment。

注意:當此子命令在名為 src/ 的工作區中呼叫時,其父目錄被視為 Scalar enlistment。如果工作區名為 src/,則其本身將被視為 Scalar enlistment。

--[no-]maintenance

預設情況下,scalar register 將 enlistment 配置為使用 Git 的後臺維護功能。使用 --no-maintenance 跳過此配置。這不會停用可能已透過其他方式啟用的任何維護。

取消註冊

unregister [<enlistment>]

從 Scalar 註冊的倉庫列表中移除指定倉庫,並停止預定的後臺維護。

執行

scalar run ( all | config | commit-graph | fetch | loose-objects | pack-files ) [<enlistment>]

執行給定的維護任務(如果指定了 all,則執行所有任務)。除了 allconfig,此子命令只是轉交給 git-maintenance[1](將 fetch 對映到 prefetch,將 pack-files 對映到 incremental-repack)。

這些任務作為預定維護的一部分自動執行,一旦倉庫在 Scalar 中註冊。因此,通常不需要手動執行此子命令。

config 任務是 Scalar 特有的,它配置所有那些有助於 Git 更高效地處理大型倉庫的固有預設設定。由於此任務作為 scalar clone 的一部分自動執行,因此很少需要顯式呼叫此任務。

重新配置

在 Scalar 升級後,或者當 Scalar enlistment 的配置因某種原因損壞或被錯誤更改時,此子命令允許重新配置 enlistment。

--all

當指定 --all 時,透過 scalar.repo 配置鍵重新配置當前所有註冊到 Scalar 的 enlistment。每次升級後使用此選項以獲取最新功能。

--maintenance=(enable|disable|keep)

預設情況下,Scalar 會將 enlistment 配置為使用 Git 的後臺維護功能;這與使用此選項的 enable 值相同。使用 disable 值將每個被考慮的 enlistment 從後臺維護中移除。使用 'keep' 可以保持這些倉庫的後臺維護配置不變。

診斷

diagnose [<enlistment>]

報告 Scalar 問題時,提供此命令收集的資訊通常很有幫助,包括日誌和描述當前 enlistment 資料形態的某些統計資訊。

此命令的輸出是一個 .zip 檔案,它被寫入到 src 目錄中工作區旁邊的一個目錄中。

刪除

delete <enlistment>

此子命令允許您從本地檔案系統中刪除現有的 Scalar enlistment,並取消註冊該倉庫。

另請參閱

GIT

Git[1] 套件的一部分

scroll-to-top