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