名称

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