Svenska ▾ Topics ▾ Latest version ▾ git-pack-refs last updated in 2.52.0

NAMN

git-pack-refs - Packa huvuden och taggar för effektiv repo-åtkomst

SYNOPSIS

git pack-refs [--all] [--no-prune] [--auto] [--include <mönster>] [--exclude <mönster>]

BESKRIVNING

Traditionellt lagrades tips för grenar och taggar (gemensamt kallade referenser) en fil per referens i en (under)katalog under katalogen $GIT_DIR/refs. Medan många grentips tenderar att uppdateras ofta, uppdateras de flesta taggar och vissa grentips aldrig. När ett arkiv har hundratals eller tusentals taggar, slösar detta format med en fil per referens både lagringsutrymme och försämrar prestandan.

Detta kommando används för att lösa lagrings- och prestandaproblem genom att lagra referenserna i en enda fil, $GIT_DIR/packed-refs. När en referens saknas i den traditionella kataloghierarkin $GIT_DIR/refs, slås den upp i denna fil och används om den hittas.

Efterföljande uppdateringar av grenar skapar alltid nya filer under kataloghierarkin $GIT_DIR/refs.

A recommended practice to deal with a repository with too many refs is to pack its refs with --all once, and occasionally run git pack-refs. Tags are by definition stationary and are not expected to change. Branch heads will be packed with the initial pack-refs --all, but only the currently active branch heads will become unpacked, and the next pack-refs (without --all) will leave them unpacked.

ALTERNATIV

--all

Kommandot packar som standard alla taggar och referenser som redan är packade, och lämnar andra referenser ifred. Detta beror på att grenar förväntas utvecklas aktivt och att packa deras tips inte förbättrar prestandan. Det här alternativet gör att alla referenser också packas, med undantag för dolda referenser, trasiga referenser och symboliska referenser. Användbart för ett repo med många grenar av historiskt intresse.

--no-prune

Kommandot tar vanligtvis bort lösa referenser under hierarkin $GIT_DIR/refs efter att ha packat dem. Den här alternativet säger att det inte ska göra det.

--auto

Packa referenser efter behov beroende på referensdatabasens aktuella tillstånd. Beteendet beror på vilket referensformat som används av arkivet och kan ändras i framtiden.

  • "filer": Lösa referenser packas i filen packed-refs baserat på förhållandet mellan lösa referenser och storleken på filen packed-refs. Ju större packed-refs-filen är, desto fler lösa referenser måste finnas innan vi packar om.

  • "reftable": Tabeller komprimeras så att de bildar en geometrisk sekvens. För två tabeller N och N+1, där N+1 är nyare, bibehålls egenskapen att N är minst dubbelt så stor som N+1. Endast tabeller som bryter mot denna egenskap komprimeras.

--include <mönster>

Packa referenser baserat på ett glob(7)-mönster. Upprepningar av detta alternativ ackumulerar inkluderingsmönster. Om en referens ingår i både --include och --exclude, har --exclude företräde. Användning av --include förhindrar att alla taggar inkluderas som standard. Symboliska referenser och trasiga referenser kommer aldrig att packas. När det används med --all blir det en noop. Använd --no-include för att rensa och återställa listan över mönster.

--exclude <mönster>

Packa inte referenser som matchar det givna glob(7)-mönstret. Upprepningar av detta alternativ ackumulerar undantagsmönster. Använd --no-exclude för att rensa och återställa listan över mönster. Om en referens redan är packad, kommer inkludering av den med --exclude inte att packa upp den.

När det används med --all, packa endast lösa referenser som inte matchar något av de angivna --exclude-mönstren.

När det används med --include kommer referenser som anges till --include, minus referenser som anges till --exclude, att packas.

BUGGAR

Äldre dokumentation skriven innan packed-refs-mekanismen introducerades kan fortfarande säga saker som ".git/refs/heads/<gren> file exists" när det betyder "branch <gren> exists".

GIT

En del av git[1]-sviten