English ▾ Themen ▾ Neueste Version ▾ git-index-pack zuletzt aktualisiert in 2.52.0

NAME

git-index-pack - Erstellt eine Pack-Indexdatei für ein vorhandenes gepacktes Archiv

SYNOPSIS

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>]

BESCHREIBUNG

Liest ein gepacktes Archiv (.pack) aus der angegebenen Datei, erstellt eine Pack-Indexdatei (.idx) dafür und schreibt optional einen Reverse-Index (.rev) für das angegebene Pack. Das gepackte Archiv kann dann zusammen mit dem Pack-Index im Verzeichnis objects/pack/ eines Git-Repositorys platziert werden.

OPTIONEN

-v

Sei ausführlich über das Geschehen, einschließlich des Fortschritts.

-o <index-file>

Schreibt den generierten Pack-Index in die angegebene Datei. Ohne diese Option wird der Name der Pack-Indexdatei aus dem Namen der gepackten Archivdatei gebildet, indem .pack durch .idx ersetzt wird (und das Programm schlägt fehl, wenn der Name der gepackten Archivdatei nicht mit .pack endet).

--rev-index
--no-rev-index

Wenn dieses Flag gesetzt ist, wird ein Reverse-Index (eine .rev-Datei) für das gegebene Pack generiert. Wenn --verify angegeben ist, wird sichergestellt, dass der vorhandene Reverse-Index korrekt ist. Hat Vorrang vor pack.writeReverseIndex.

--stdin

Wenn dieses Flag gesetzt ist, wird das Pack von stdin gelesen und eine Kopie davon nach <pack-file> geschrieben. Wenn <pack-file> nicht angegeben ist, wird das Pack in das Verzeichnis objects/pack/ des aktuellen Git-Repositorys geschrieben, wobei ein Standardname basierend auf dem Pack-Inhalt verwendet wird. Wenn <pack-file> nicht angegeben ist, sollten Sie --keep verwenden, um einen Wettlaufzustand zwischen diesem Prozess und git repack zu vermeiden.

--fix-thin

Korrigiert ein "dünnes" Pack, das von git pack-objects --thin erzeugt wurde (siehe git-pack-objects[1] für Details), indem die ausgeschlossenen Objekte, auf denen die deltabasierten Objekte basieren, zum Pack hinzugefügt werden. Diese Option ist nur in Verbindung mit --stdin sinnvoll.

--keep

Bevor der Index an seinen endgültigen Bestimmungsort verschoben wird, wird eine leere .keep-Datei für die zugehörige Packdatei erstellt. Diese Option ist normalerweise mit --stdin erforderlich, um zu verhindern, dass ein gleichzeitiger git repack-Prozess das neu erstellte Pack und den Index löscht, bevor die Referenzen aktualisiert werden können, um die im Pack enthaltenen Objekte zu verwenden.

--keep=<msg>

Wie --keep, erstellt eine .keep-Datei, bevor der Index an seinen endgültigen Bestimmungsort verschoben wird. Anstatt eine leere Datei zu erstellen, wird <msg> gefolgt von einem LF in die .keep-Datei geschrieben. Die Nachricht <msg> kann später in allen .keep-Dateien durchsucht werden, um diejenigen zu finden, die ihren Zweck erfüllt haben.

--index-version=<version>[,<offset>]

Dies ist nur für die Testsuite bestimmt. Es ermöglicht, die Version für den generierten Pack-Index zu erzwingen und 64-Bit-Indexeinträge für Objekte zu erzwingen, die sich oberhalb des angegebenen Offsets befinden.

--strict[=<msg-id>=<severity>…​]

Beendet das Programm, wenn das Pack fehlerhafte Objekte oder Links enthält. Eine optionale, durch Kommas getrennte Liste von <msg-id>=<severity> kann übergeben werden, um die Schwere bestimmter möglicher Probleme zu ändern, z. B. --strict="missingEmail=ignore,badTagName=error". Siehe den Eintrag für die Konfigurationsoptionen fsck.<msg-id> in git-fsck[1] für weitere Informationen über die möglichen Werte von <msg-id> und <severity>.

--progress-title

Nur für interne Verwendung.

Setzt den Titel des Fortschrittsbalkens. Der Titel ist standardmäßig "Receiving objects" und "Indexing objects", wenn --stdin angegeben ist.

--check-self-contained-and-connected

Beendet das Programm, wenn das Pack fehlerhafte Links enthält. Nur für interne Verwendung.

--fsck-objects[=<msg-id>=<severity>…​]

Beendet das Programm, wenn das Pack fehlerhafte Objekte enthält, aber im Gegensatz zu --strict nicht bei fehlerhaften Links abbricht. Wenn das Pack einen Baum enthält, der auf einen nicht vorhandenen .gitmodules-Blob verweist, wird der Hash dieses Blobs (zur Überprüfung durch den Aufrufer) nach dem Hash gedruckt, der in den Namen der Pack/idx-Datei eingeht (siehe "Hinweise").

Eine optionale, durch Kommas getrennte Liste von <msg-id>=<severity> kann übergeben werden, um die Schwere bestimmter möglicher Probleme zu ändern, z. B. --fsck-objects="missingEmail=ignore,badTagName=ignore". Siehe den Eintrag für die Konfigurationsoptionen fsck.<msg-id> in git-fsck[1] für weitere Informationen über die möglichen Werte von <msg-id> und <severity>.

--threads=<n>

Gibt die Anzahl der Threads an, die beim Auflösen von Deltas gestartet werden sollen. Dies erfordert, dass index-pack mit pthreads kompiliert wurde, andernfalls wird diese Option mit einer Warnung ignoriert. Dies dient dazu, die Packzeit auf Mehrprozessormaschinen zu reduzieren. Der benötigte Speicher für das Delta-Suchfenster wird jedoch mit der Anzahl der Threads multipliziert. Die Angabe von 0 veranlasst Git, die Anzahl der CPUs automatisch zu erkennen und maximal 3 Threads zu verwenden.

--max-input-size=<size>

Beendet das Programm, wenn das Pack größer als <size> ist.

--object-format=<hash-algorithm>

Gibt das angegebene Objektformat (Hash-Algorithmus) für das Pack an. Die gültigen Werte sind sha1 und (falls aktiviert) sha256. Der Standardwert ist der Algorithmus für das aktuelle Repository (gesetzt durch extensions.objectFormat) oder sha1, wenn kein Wert gesetzt ist oder außerhalb eines Repositorys.

Diese Option kann nicht mit --stdin verwendet werden.

Hinweis: Derzeit gibt es keine Interoperabilität zwischen SHA-256-Repositorys und SHA-1-Repositorys.

Historisch warnten wir davor, dass SHA-256-Repositorys möglicherweise später rückwärts inkompatible Änderungen benötigen, wenn wir solche Interoperabilitätsfunktionen einführen. Heute erwarten wir nur noch kompatible Änderungen. Darüber hinaus ist davon auszugehen, dass SHA-256-Repositorys, die mit dem heutigen Git erstellt wurden, auch mit zukünftigen Git-Versionen ohne Datenverlust nutzbar sein werden, falls solche Änderungen notwendig werden.

--promisor[=<message>]

Bevor der Pack-Index committet wird, wird eine .promisor-Datei für dieses Pack erstellt. Dies ist besonders hilfreich beim Schreiben eines Promisor-Packs mit --fix-thin, da der Name des Packs erst finalisiert wird, wenn das Pack vollständig geschrieben wurde. Wenn eine <message> angegeben wird, wird deren Inhalt für zukünftige Referenzen in die .promisor-Datei geschrieben. Siehe partial clone für weitere Informationen.

Außerdem, wenn das gegebene Pack Objekte enthält, die auf Nicht-Promisor-Objekte (im Repo) verweisen, werden diese Nicht-Promisor-Objekte in ein Promisor-Pack neu gepackt. Dies vermeidet eine Situation, in der ein Repo Nicht-Promisor-Objekte enthält, die über Promisor-Objekte zugänglich sind.

Erfordert, dass <pack-file> nicht angegeben ist.

ANMERKUNGEN

Sobald der Index erstellt wurde, wird der Hash, der in den Namen der Pack/idx-Datei eingeht, auf stdout ausgegeben. Wenn auch --stdin verwendet wurde, wird dies von entweder "pack\t" oder "keep\t" vorangestellt, wenn erfolgreich eine neue .keep-Datei erstellt wurde. Dies ist nützlich, um eine .keep-Datei zu entfernen, die als Sperre verwendet wurde, um den oben erwähnten Wettlauf mit git repack zu verhindern.

GIT

Teil der git[1] Suite