English ▾ Themen ▾ Neueste Version ▾ gitformat-bundle zuletzt aktualisiert in 2.43.0

NAME

gitformat-bundle - Das Bundle-Dateiformat

SYNOPSIS

*.bundle
*.bdl

BESCHREIBUNG

Das Git-Bundle-Format ist ein Format, das sowohl Refs als auch Git-Objekte repräsentiert. Ein Bundle besteht aus einem Header im Format, das git-show-ref[1] ähnelt, gefolgt von einem Pack im *.pack-Format.

Das Format wird vom Befehl git-bundle[1] erstellt und gelesen und unterstützt von z.B. git-fetch[1] und git-clone[1].

FORMAT

Wir verwenden die ABNF-Notation, um das Git-Bundle-Format zu definieren. Details siehe gitprotocol-common[5].

Ein v2 Bundle sieht so aus

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

Ein v3 Bundle sieht so aus

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

SEMANTIK

Ein Git-Bundle besteht aus mehreren Teilen.

  • "Capabilities" (Funktionen), die nur im v3-Format vorhanden sind, geben Funktionalitäten an, die das Bundle zum korrekten Lesen benötigt.

  • "Prerequisites" (Voraussetzungen) listen die Objekte auf, die NICHT im Bundle enthalten sind und die der Leser des Bundles bereits besitzen MUSS, um die Daten im Bundle verwenden zu können. Die im Bundle gespeicherten Objekte können auf Voraussetzungsobjekte und alles von ihnen Erreichbare verweisen (z. B. kann ein Baumobjekt im Bundle auf einen Blob verweisen, der von einer Voraussetzung erreichbar ist) und/oder als Delta gegen Voraussetzungsobjekte ausgedrückt werden.

  • "References" (Referenzen) zeichnen die Spitzen des Historien-Graphen auf, d. h., was der Leser des Bundles daraus "git fetch"en kann.

  • "Pack" ist der Pack-Datenstrom, den "git fetch" senden würde, wenn Sie von einem Repository fetchen, das die unter "References" aufgezeichneten Referenzen in ein Repository mit Referenzen, die auf die unter "Prerequisites" aufgeführten Objekte zeigen, fetchen.

Im Bundle-Format kann nach einer Voraussetzungs-Objekt-ID ein Kommentar folgen. Dies ist ein Kommentar und hat keine spezifische Bedeutung. Der Verfasser des Bundles KANN hier eine beliebige Zeichenkette einfügen. Der Leser des Bundles MUSS den Kommentar ignorieren.

Hinweis zu flachen Klonen und Git-Bundles

Beachten Sie, dass die Voraussetzungen keine Grenze für flache Klone darstellen. Die Semantik der Voraussetzungen und der Grenzen für flache Klone sind unterschiedlich, und das Git-Bundle-v2-Format kann ein Repository mit flachem Klon nicht darstellen.

FUNKTIONEN

Da keine Möglichkeit zur Aushandlung besteht, bricht git bundle bei unbekannten Funktionen ab.

  • object-format gibt den verwendeten Hash-Algorithmus an und kann dieselben Werte wie der Konfigurationswert extensions.objectFormat annehmen.

  • filter gibt einen Objektfilter an, wie in der Option --filter in git-rev-list[1]. Die resultierende Pack-Datei muss nach dem Entpacken als .promisor Pack-Datei gekennzeichnet werden.

GIT

Teil der git[1] Suite