简体中文 ▾ 主题 ▾ 最新版本 ▾ git-index-pack 最后更新于 2.52.0

名称

git-index-pack - 为现有打包归档文件构建打包索引文件

概要

git index-pack [-v] [-o <index-file>] [--[no-]rev-index] <pack-file>
git index-pack --stdin [--fix-thin] [--keep] [-v] [-o <index-file>]
		  [--[no-]rev-index] [<pack-file>]

描述

从指定文件读取打包归档文件 (.pack),为其构建一个打包索引文件 (.idx),并可选择为指定的打包文件写入一个反向索引文件 (.rev)。然后,打包归档文件和打包索引文件可以放置在 Git 仓库的 objects/pack/ 目录中。

选项

-v

详细说明正在进行的操作,包括进度状态。

-o <index-file>

将生成的打包索引写入指定文件。如果没有此选项,打包索引文件的名称将通过将打包归档文件名称中的 .pack 替换为 .idx 来构造(如果打包归档文件名称不是以 .pack 结尾,程序将失败)。

--rev-index
--no-rev-index

提供此标志时,生成一个与给定打包文件对应的反向索引(一个 .rev 文件)。如果给出 --verify,确保现有反向索引正确。优先于 pack.writeReverseIndex

--stdin

提供此标志时,打包文件从标准输入读取,然后将副本写入 <pack-file>。如果未指定 <pack-file>,则打包文件将写入当前 Git 仓库的 objects/pack/ 目录,其默认名称根据打包内容确定。如果未指定 <pack-file>,请考虑使用 --keep 以防止此进程与 git repack 之间出现竞争条件。

--fix-thin

通过将增量化对象所基于的排除对象添加到打包文件来修复由 git pack-objects --thin 生成的“瘦”打包文件(有关详细信息,请参阅 git-pack-objects[1])。此选项仅在与 --stdin 结合使用时才有意义。

--keep

在将索引移动到最终目的地之前,为关联的打包文件创建一个空的 .keep 文件。此选项通常与 --stdin 一起使用,以防止同时进行的 git repack 进程在引用更新以使用打包文件中包含的对象之前删除新构建的打包文件和索引。

--keep=<msg>

与 --keep 类似,在将索引移动到最终目的地之前创建一个 .keep 文件。但是,它不是创建一个空文件,而是在 .keep 文件中放置 <msg> 后跟一个换行符。<msg> 消息以后可以在所有 .keep 文件中搜索,以找到任何已失去其用途的文件。

--index-version=<version>[,<offset>]

此选项仅供测试套件使用。它允许强制生成打包索引的版本,并强制在给定偏移量以上位置的对象使用 64 位索引条目。

--strict[=<msg-id>=<severity>…​]

如果打包文件包含损坏的对象或链接,则退出。可以传递一个可选的逗号分隔的 <msg-id>=<severity> 列表来更改某些可能问题的严重性,例如 --strict="missingEmail=ignore,badTagName=error"。有关 <msg-id><severity> 可能值的更多信息,请参阅 git-fsck[1]fsck.<msg-id> 配置选项的条目。

--progress-title

仅供内部使用。

设置进度条的标题。默认情况下,标题为“Receiving objects”,当指定 --stdin 时为“Indexing objects”。

--check-self-contained-and-connected

如果打包文件包含损坏的链接,则退出。仅供内部使用。

--fsck-objects[=<msg-id>=<severity>…​]

如果打包文件包含损坏的对象,则退出,但与 --strict 不同,它不会因损坏的链接而窒息。如果打包文件包含指向不存在的 .gitmodules blob 的树,则会在进入打包/索引文件名称的哈希值之后打印该 blob 的哈希值(供调用者检查)(请参阅“Notes”)。

可以传递一个可选的逗号分隔的 <msg-id>=<severity> 列表来更改某些可能问题的严重性,例如 --fsck-objects="missingEmail=ignore,badTagName=ignore"。有关 <msg-id><severity> 可能值的更多信息,请参阅 git-fsck[1]fsck.<msg-id> 配置选项的条目。

--threads=<n>

指定解析增量时要生成的线程数。这要求 index-pack 使用 pthreads 进行编译,否则此选项将被忽略并发出警告。这旨在减少多处理器机器上的打包时间。然而,增量搜索窗口所需的内存量将乘以线程数。指定 0 将使 Git 自动检测 CPU 数量并最多使用 3 个线程。

--max-input-size=<size>

如果打包文件大于 <size>,则退出。

--object-format=<hash-algorithm>

为打包文件指定给定的对象格式(哈希算法)。有效值为 sha1 和(如果启用)sha256。默认值为当前仓库的算法(由 extensions.objectFormat 设置),如果未设置值或在仓库外部,则为 sha1

此选项不能与 --stdin 一起使用。

注意:目前,SHA-256 仓库与 SHA-1 仓库之间不具备互操作性。

过去,我们曾警告说 SHA-256 仓库在引入此类互操作性功能时可能需要向后不兼容的更改。今天,我们仅预期兼容性更改。此外,如果事实证明这些更改是必要的,那么可以预期今天 Git 创建的 SHA-256 仓库将在不丢失数据的情况下被未来版本的 Git 使用。

--promisor[=<message>]

在提交打包索引之前,为此打包文件创建一个 .promisor 文件。在使用 --fix-thin 写入承诺打包文件时特别有用,因为打包文件的名称直到完全写入后才最终确定。如果提供了 <message>,则该内容将写入 .promisor 文件以供将来参考。有关详细信息,请参阅 部分克隆

此外,如果给定打包文件中存在引用非承诺对象(在仓库中)的对象,则会将这些非承诺对象重新打包到承诺打包文件中。这避免了仓库中存在可通过承诺对象访问的非承诺对象的情况。

要求不指定 <pack-file>。

注意事项

创建索引后,进入打包/索引文件名称的哈希值将打印到标准输出。如果也使用了 --stdin,则此哈希值前面会加上“pack\t”,如果成功创建了新的 .keep 文件,则前面会加上“keep\t”。这对于删除用作锁的 .keep 文件以防止上述与 git repack 的竞争非常有用。

GIT

Git[1] 套件的一部分