Spec-Zone.ru › Git

git-multi-pack-index

Имя

git-multi-pack-index — запись и проверка мультииндексов пакетов

Сводка

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. Проверяется наличие текущего файла MIDX в <dir>/packs/multi-pack-index, а индексируемых файлов пакетов — в <dir>/packs.

<dir> должен быть альтернативным каталогом текущего репозитория.

--progress
--no-progress

Явно включить или отключить отображение хода выполнения. Если не указан ни один из этих параметров, ход выполнения отображается, когда стандартный поток ошибок подключён к терминалу. Поддерживается подкомандами write, verify, expire и repack.

Доступны следующие подкоманды:

write

Записать новый файл MIDX. Для подкоманды write доступны следующие параметры:

--preferred-pack=<pack>

Если указан, при наличии дополнительных копий объектов в других пакетах разрешать неоднозначность в пользу этого пакета. Неоднозначность для объектов, отсутствующих в предпочтительном пакете, всегда разрешается в пользу копии в пакете с самым поздним временем изменения (mtime). Если параметр не указан, по умолчанию используется пакет с самым ранним временем изменения. Предпочтительный пакет должен содержать хотя бы один объект.

--[no-]bitmap

Управлять созданием мультибитовой карты пакетов.

--stdin-packs

Записать мультииндекс пакетов, содержащий только набор базовых имён файлов индексов пакетов, переданный через stdin, по одному имени на строку.

--refs-snapshot=<path>

При использовании с --bitmap при необходимости указать файл со «снимком ссылок», созданным до перепаковки.

Снимок ссылок состоит из OID вершин ссылок, каждый на отдельной строке; обычно его создают с помощью git repack перед созданием нового пакета. Строка может начинаться с символа +, указывающего, что ссылка, соответствующая этому OID, является «предпочтительной» (см. pack.preferBitmapTips в git-config[1]).

Файл, указанный в <path>, должен быть доступен для чтения и может содержать дубликаты. (Если один и тот же OID указан несколько раз, он помечается как предпочтительный, если хотя бы один его экземпляр начинается со специального маркера +.)

--incremental

Записать инкрементальный файл MIDX, содержащий только объекты и пакеты, отсутствующие в существующем слое MIDX. При необходимости преобразует неинкрементальные файлы MIDX в инкрементальные.

--[no-]write-chain-file

При использовании с --incremental записать новый слой MIDX, но не обновлять файл цепочки мультииндекса пакетов. Контрольная сумма нового слоя выводится в стандартный поток вывода, что позволяет вызывающей стороне самостоятельно собрать и записать цепочку. Требуется --incremental.

--base=<checksum>

Указать контрольную сумму существующего слоя MIDX, который следует использовать в качестве базового при записи нового инкрементального слоя. Специальное значение none означает, что у нового слоя не должно быть базы (то есть он становится корневым слоем). Требуется --no-write-chain-file.

compact

Записать новый слой MIDX, содержащий только объекты и пакеты из диапазона от <from> до <to>, где оба аргумента — контрольные суммы существующих слоёв в цепочке MIDX.

--incremental

Записать результат в цепочку MIDX, а не в отдельный файл MIDX.

--[no-]bitmap

Управлять созданием мультибитовой карты пакетов.

--[no-]write-chain-file

При использовании с --incremental записать новый уплотнённый слой MIDX, но не обновлять файл цепочки мультииндекса пакетов. Контрольная сумма нового слоя выводится в стандартный поток вывода. Требуется --incremental.

--base=<checksum>

Указать контрольную сумму существующего слоя MIDX, который следует использовать в качестве базы для результата уплотнения вместо непосредственного родительского слоя <from>. Специальное значение none означает, что у результата не должно быть базы.

Обратите внимание: команда compact требует записи MIDX версии 2, которую не могут читать версии Git до v2.54.

verify

Проверить содержимое файла MIDX.

expire

Удалить файлы пакетов, отслеживаемые файлом MIDX, но не содержащие объектов, на которые ссылается MIDX (за исключением пакетов .keep и пакетов с мусором). Затем переписать файл MIDX, удалив все ссылки на эти файлы пакетов.

Примечание
этот режим несовместим с инкрементальными файлами MIDX.
repack

Создать новый файл пакета, содержащий объекты из небольших файлов пакетов, на которые ссылается мультииндекс пакетов. Если размер, заданный аргументом --batch-size=<size>, равен нулю, создать пакет со всеми объектами, на которые ссылается мультииндекс пакетов. Если размер пакета не равен нулю, выбрать файлы пакетов, просматривая их от самых старых к самым новым, вычисляя «ожидаемый размер»: подсчитать количество объектов в пакете, на которые ссылается мультииндекс пакетов, разделить на общее количество объектов в пакете и умножить на размер пакета. Выбирать пакеты с ожидаемым размером меньше заданного размера пакета, пока суммарный ожидаемый размер набора пакетов не достигнет как минимум заданного размера или пока не будут рассмотрены все файлы пакетов. Если выбран только один файл пакета, ничего не делать. Если создан новый файл пакета, переписать мультииндекс пакетов так, чтобы он ссылался на новый файл. При следующем запуске git multi-pack-index expire удалит файлы пакетов, входившие в эту группу.

Если repack.packKeptObjects равен false, то файлы пакетов, связанные с файлом .keep, не будут выбраны для перепаковки.

Примечание
этот режим несовместим с инкрементальными файлами MIDX.

Примеры

  • Записать файл MIDX для файлов пакетов в текущем каталоге .git.

    $ git multi-pack-index write
  • Записать файл MIDX с соответствующей битовой картой для файлов пакетов в текущем каталоге .git.

    $ git multi-pack-index write --preferred-pack=<pack> --bitmap
  • Записать файл MIDX для файлов пакетов в альтернативном хранилище объектов.

    $ git multi-pack-index --object-dir <alt> write
  • Проверить файл MIDX для файлов пакетов в текущем каталоге .git.

    $ git multi-pack-index verify

См. также

Дополнительные сведения о функции мультииндекса пакетов и формате её файла см. в документе о структуре мультииндекса пакетов и gitformat-pack[5].

multi-pack-index

© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-multi-pack-index

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API