git-index-pack
Имя
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) для указанного пака. Упакованный архив вместе с индексом пака затем можно разместить в каталоге objects/pack/ репозитория Git.
Параметры
- -v
-
Более подробная информация о процессе, включая статус выполнения.
- -o <index-file>
-
Записать сгенерированный индекс пака в указанный файл. Без этого параметра имя файла индекса пака строится из имени файла упакованного архива путём замены .pack на .idx (и программа завершается ошибкой, если имя упакованного архива не оканчивается на .pack).
- --[no-]rev-index
-
При указании этого флага, генерируется обратный индекс (файл
.rev) соответствующий данному пакету. Если--verifyзадан, гарантирует, что существующий обратный индекс верен. Имеет приоритет надpack.writeReverseIndex. - --stdin
-
При указании этого флага, пакет считывается из стандартного ввода вместо файла и затем копируется в <pack-file>. Если <pack-file> не указан, пакет записывается в каталог objects/pack/ текущего репозитория Git с именем, определённым по умолчанию из содержимого пакета. Если <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>с последующим LF. Сообщение<msg>можно позже найти во всех файлах .keep, чтобы определить, какие из них устарели. - --index-version=<version>[,<offset>]
-
Предназначен для использования только набором тестов. Позволяет форсировать версию сгенерированного индекса пака и форсировать 64-битные записи индекса для объектов, расположенных выше указанного смещения.
- --strict[=<msg-id>=<severity>…]
-
Завершить работу, если пакет содержит повреждённые объекты или ссылки. Необязательный список параметров через запятую
<msg-id>=<severity>может быть передан для изменения уровня важности некоторых возможных проблем, например--strict="missingEmail=ignore,badTagName=error". Подробнее о возможных значениях<msg-id>и<severity>см. запись конфигурационных параметровfsck.<msg-id>в git-fsck[1]. - --progress-title
-
Только для внутреннего использования.
Устанавливает заголовок полосы прогресса. По умолчанию «Получение объектов», «Индексирование объектов» при указании
--stdin. - --check-self-contained-and-connected
-
Завершить работу, если пакет содержит повреждённые ссылки. Только для внутреннего использования.
- --fsck-objects[=<msg-id>=<severity>…]
-
Завершить работу, если пакет содержит повреждённые объекты, но в отличие от
--strict, не останавливаться на повреждённых ссылках. Если пакет содержит дерево, указывающее на .gitmodules blob, который не существует, выводит хэш этого blob (для проверки вызывающей стороной) после хэша, который входит в имя файла пакета/idx (см. «Примечания»).Необязательный список параметров через запятую
<msg-id>=<severity>может быть передан для изменения уровня важности некоторых возможных проблем, например--fsck-objects="missingEmail=ignore,badTagName=ignore". Подробнее о возможных значениях<msg-id>и<severity>см. запись конфигурационных параметровfsck.<msg-id>в git-fsck[1]. - --threads=<n>
-
Указывает количество потоков, которые необходимо запустить при разрешении дельт. Это требует, чтобы index-pack был скомпилирован с pthreads, в противном случае этот параметр игнорируется с предупреждением. Предназначен для уменьшения времени упаковки на многопроцессорных машинах. Однако необходимый объём памяти для окна поиска дельт умножается на количество потоков. Указание 0 заставит Git автоматически определить количество ЦП и использовать максимум 3 потока.
- --max-input-size=<size>
-
Завершить работу, если пакет больше, чем <size>.
- --object-format=<hash-algorithm>
-
Указывает заданный формат объекта (алгоритм хеширования) для пакета. Допустимые значения
sha1и (если включено)sha256. По умолчанию используется алгоритм для текущего репозитория (установленныйextensions.objectFormat) илиsha1если значение не установлено или вне репозитория.Этот параметр нельзя использовать с --stdin.
Примечание: В настоящее время нет совместимости между репозиториями SHA-256 и SHA-1.
Исторически мы предупреждали, что репозитории SHA-256 могут потребовать в будущем несовместимых изменений, когда мы внедрим такие функции межсовместимости. Сегодня мы ожидаем только совместимые изменения. Кроме того, если такие изменения окажутся необходимыми, можно ожидать, что репозитории SHA-256, созданные с сегодняшней версией Git, будут совместимы с будущими версиями Git без потери данных.
- --promisor[=<message>]
-
Перед подтверждением индекса пакета создать файл .promisor для этого пакета. Особенно полезно при создании пакета promisor с --fix-thin, поскольку имя пакета окончательно определяется только после полной записи пакета. Если указано
<message>, тогда это содержимое будет записано в файл .promisor для будущей справки. Подробнее см. частичное клонирование.Кроме того, если в данном пакете есть объекты, ссылающиеся на не-promisor объекты (в репозитории), переупакует эти не-promisor объекты в promisor пакет. Это позволяет избежать ситуации, когда в репозитории есть не-promisor объекты, доступные через promisor объекты.
Требуется, чтобы <pack-file> не был указан.
Примечания
После создания индекса хэш, который входит в имя файла пакета/idx, выводится в стандартный вывод. Если также использовался --stdin, это префикс «pack\t» или «keep\t», если новый файл .keep был успешно создан. Это полезно для удаления файла .keep, используемого в качестве блокировки, чтобы предотвратить состояние гонки с git repack упомянутым выше.
index-pack
© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-index-pack