Spec-Zone.ru › Git

gitformat-bundle

Имя

gitformat-bundle — формат файла архива

Синопсис

*.bundle
*.bdl

Описание

Формат Git-архива представляет ссылки и объекты Git. Архив — это заголовок в формате, аналогичном git-show-ref[1], за которым следует пакет в формате *.pack.

Формат создаётся и читается командой git-bundle[1] и поддерживается, например, командами git-fetch[1] и git-clone[1].

Формат

Для определения формата Git-архива мы будем использовать обозначение ABNF. Подробности см. в gitprotocol-common[5].

Архив v2 выглядит так:

bundle    = signature *prerequisite *reference LF pack
signature = "# v2 git bundle" LF

prerequisite = "-" obj-id SP comment LF
comment      = *CHAR
reference    = obj-id SP refname LF

pack         = ... ; packfile

Архив v3 выглядит так:

bundle    = signature *capability *prerequisite *reference LF pack
signature = "# v3 git bundle" LF

capability   = "@" key ["=" value] LF
prerequisite = "-" obj-id SP comment LF
comment      = *CHAR
reference    = obj-id SP refname LF
key          = 1*(ALPHA / DIGIT / "-")
value        = *(%01-09 / %0b-FF)

pack         = ... ; packfile

Семантика

Git-архив состоит из нескольких частей.

  • «Возможности», присутствующие только в формате v3, указывают на функциональность, необходимую для корректного чтения архива.

  • Список «Предварительных требований» перечисляет объекты, которые НЕ включены в архив, и которые должны быть у читателя архива для использования данных в архиве. Объекты, хранящиеся в архиве, могут ссылаться на объекты предварительных требований и любые объекты, доступные из них (например, объект дерева в архиве может ссылаться на объект blob, доступный из предварительного требования), и/или выражаться как дельта относительно объектов предварительных требований.

  • «Ссылки» записывают вершины графа истории, то есть, что читатель архива может «git fetch» из него.

  • «Пакет» — это поток данных пакета, который «git fetch» отправлял бы, если бы вы выполняли fetch из репозитория, содержащего ссылки, записанные в «Ссылках», в репозиторий, имеющий ссылки, указывающие на объекты, перечисленные в «Предварительных требованиях».

В формате архива может быть комментарий, следующий за объектным идентификатором предварительного требования. Это комментарий, не имеющий особого значения. Автор архива МОЖЕТ поместить сюда любую строку. Читатель архива ДОЛЖЕН проигнорировать этот комментарий.

Примечание о поверхностных клонах и Git-архивах

Обратите внимание, что предварительные требования не представляют границу поверхностного клона. Семантика предварительных требований и границ поверхностного клона различны, и формат Git-архива v2 не может представлять репозиторий поверхностного клона.

Возможности

Поскольку нет возможности для переговоров, неизвестные возможности вызывают git bundle для прерывания.

  • object-format определяет используемый алгоритм хеширования и может принимать те же значения, что и значение конфигурации extensions.objectFormat.

  • filter определяет фильтр объектов, как в опции --filter в git-rev-list[1]. Результирующий файл пакета должен быть помечен как файл пакета .promisor после его распаковки.

gitformat-bundle

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

Spec-Zone.ru

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