Skip to content

git-multi-pack-index

写入和验证多包索引。

概要

txt
'git multi-pack-index' [<options>] write [--preferred-pack=<pack>]
		         [--[no-]bitmap] [--[no-]incremental] [--[no-]stdin-packs]
		         [--refs-snapshot=<path>] [--[no-]write-chain-file]
			 [--base=<checksum>]
'git multi-pack-index' [<options>] compact [--[no-]incremental]
		         [--[no-]bitmap] [--base=<checksum>] [--[no-]write-chain-file]
			 <from> <to>
'git multi-pack-index' [<options>] verify
'git multi-pack-index' [<options>] expire
'git multi-pack-index' [<options>] repack [--batch-size=<size>]

描述

写入或验证多包索引 (MIDX) 文件。

选项

以下命令行选项适用于所有子命令:

--object-dir=<dir>

:使用给定目录作为 Git 对象的位置。我们检查 <dir>/packs/multi-pack-index 获取当前 MIDX 文件,检查 <dir>/packs 获取要索引的包文件。<dir> 必须是当前仓库的备用目录。

--progress

--no-progress:显式开启/关闭进度。如果未指定,当标准错误连接到终端时显示进度。支持的子命令有 writeverifyexpirerepack。 以下子命令可用:

write

:写入新的 MIDX 文件。以下选项可用于 write 子命令:

--preferred-pack=<pack>

:指定时,当对象在其他包中有额外副本时,优先选择此包。未在首选包中找到的对象的平局总是偏向具有最高 mtime 的包中的副本。如果未指定,默认使用 mtime 最低的包。首选包必须至少有一个对象。

--[no-]bitmap

:控制是否写入多位图。

--stdin-packs

:写入仅包含通过标准输入提供的以行分隔的包索引基本名称集合的多包索引。

--refs-snapshot=<path>

:与 --bitmap 一起使用时,可选地指定一个文件,其中包含在重新打包之前拍摄的"引用快照"。 引用快照由对应于引用提示的以行分隔的 OID 组成,通常由 git repack 在生成新包之前拍摄。一行可以选择以 + 字符开头,以指示对应于该 OID 的引用是"首选的"(参见 git-config(1)pack.preferBitmapTips)。 <path> 处的文件预期是可读的,可以包含重复项。(如果给定 OID 多次给出,如果至少有一个实例以特殊的 + 标记开头,则标记为首选)。

--incremental

:写入仅包含现有 MIDX 层中不存在的对象和包的增量 MIDX 文件。在必要时将非增量 MIDX 迁移为增量 MIDX。

--[no-]write-chain-file

:与 --incremental 一起使用时,写入新的 MIDX 层但不更新 multi-pack-index-chain 文件。新层的校验和打印到标准输出,允许调用者自行组装和写入链。需要 --incremental

--base=<checksum>

:指定现有 MIDX 层的校验和,在写入新的增量层时用作基础。特殊值 none 表示新层不应有基础(即它成为根层)。需要 --no-write-chain-file

compact

:写入仅包含 <from><to> 范围内(两个参数都是 MIDX 链中现有层的校验和)的对象和包的新 MIDX 层。

--incremental

:将结果写入 MIDX 链而不是写入独立 MIDX。

--[no-]bitmap

:控制是否写入多位图。

--[no-]write-chain-file

:与 --incremental 一起使用时,写入新的压缩 MIDX 层但不更新 multi-pack-index-chain 文件。新层的校验和打印到标准输出。需要 --incremental

--base=<checksum>

:指定现有 MIDX 层的校验和,用作压缩结果的基础,而不是使用 <from> 的直接父层。特殊值 none 表示结果不应有基础。 请注意,compact 命令需要写入 v2.54 之前版本的 Git 无法读取的版本 2 midx。

verify

:验证 MIDX 文件的内容。

expire

:删除 MIDX 文件跟踪的但没有对象被 MIDX 引用的包文件(.keep 包和 cruft 包除外)。之后重写 MIDX 文件以移除对这些包文件的所有引用。 提示:此模式与增量 MIDX 文件不兼容。

repack

:创建包含多包索引引用的小包文件中对象的新包文件。如果 --batch-size=<size> 参数给出的大小为零,则创建包含多包索引引用的所有对象的包。对于非零批次大小,通过从最旧到最新检查包来选择包文件,通过计算包中被多包索引引用的对象数量来计算"预期大小",然后除以包中的总对象数并乘以包大小。我们选择预期大小低于批次大小的包,直到所选包的总预期大小至少为批次大小,或所有包文件都被考虑。如果只选择了一个包文件,则不执行任何操作。如果创建了新包文件,则重写多包索引以引用新包文件。随后运行 'git multi-pack-index expire' 将删除属于此批次的包文件。 如果 repack.packKeptObjectsfalse,则任何有关联 .keep 文件的包文件将不会被选择用于重新打包批次。 提示:此模式与增量 MIDX 文件不兼容。

示例

  • 为当前 .git 目录中的包文件写入 MIDX 文件:

    $ git multi-pack-index write
  • 为当前 .git 目录中的包文件写入带有对应位图的 MIDX 文件:

    $ git multi-pack-index write --preferred-pack=<pack> --bitmap
  • 为备用对象存储中的包文件写入 MIDX 文件:

    $ git multi-pack-index --object-dir <alt> write
  • 验证当前 .git 目录中包文件的 MIDX 文件:

    $ git multi-pack-index verify

另请参阅

有关多包索引功能及其文件格式的更多信息,请参阅多包索引设计文档gitformat-pack(5)

Git

git(1) 套件的一部分

基于 CC BY-NC-SA 3.0 许可发布