Git

NOME

git-pack-refs - Embale os cabeçalhos e a tags do pacote para acesso eficiente ao repositório

RESUMO

git pack-refs [--all] [--no-prune] [--auto] [--include <pattern>] [--exclude <pattern>]

DESCRIÇÃO

Tradicionalmente, as dicas das ramificações e as etiquetas (conhecidas coletivamente como "refs") eram armazenadas num arquivo por ref num (sub)diretório do diretório $GIT_DIR/refs. Embora muitas dicas dos ramos tendam a ser atualizadas com frequência, a maioria das etiquetas e algumas dicas dos ramos nunca são atualizadas. Quando um repositório tem centenas ou milhares de etiquetas, este formato de um arquivo por referência desperdiça armazenamento e prejudica o desempenho.

Este comando é usado para resolver o problema de armazenamento e desempenho, armazenando as referências num único arquivo, $GIT_DIR/packed-refs. Quando uma referência está faltando na hierarquia tradicional do diretório $GIT_DIR/refs, ela é procurada nesse arquivo sendo utilizada caso seja encontrada.

Atualizações subsequentes nos ramos sempre criam novos arquivos na hierarquia de diretórios $GIT_DIR/refs.

Uma prática recomendada para lidar com um repositório com muitas referências é empacotar as suas referências com a opção --all uma vez e, ocasionalmente, executar o comando git pack-refs. É predefinido que as etiquetas sejam estacionárias e não se espera que elas sejam alteradas. Os cabeçalhos da ramificação serão empacotados com o pack-refs --all inicial, mas no momento, apenas os cabeçalhos ativos da ramificação serão desempacotados, e o próximo pack-refs (sem --all) os deixará desempacotados.

OPÇÕES

--all

É predefinido que o comando, empacote todas as etiquetas e as referências que já estão empacotadas e deixa as outras referências sem empacotar. Isso se deve ao fato da espectativa que as ramificações sejam ativamente desenvolvidas, e o acúmulo dos seus cumes não ajude no desempenho. Esta opção faz com que todas as referências também sejam compactadas, com exceção das referências ocultas, quebradas e simbólicas. Útil para um repositório com muitos ramos onde haja interesses históricos.

--no-prune

O comando geralmente remove as referências soltas na hierarquia $GIT_DIR/refs após empacotá-las. Essa opção diz para não fazê-lo.

--auto

Pack refs as needed depending on the current state of the ref database. The behavior depends on the ref format used by the repository and may change in the future.

  • "files": No special handling for --auto has been implemented.

  • "reftable": Tables are compacted such that they form a geometric sequence. For two tables N and N+1, where N+1 is newer, this maintains the property that N is at least twice as big as N+1. Only tables that violate this property are compacted.

--include <padrão>

Empacota refs com base num padrão glob(7). As repetições dessa opção acumulam padrões de inclusão. Se uma referência estiver incluída tanto em --include quanto em --exclude, a opção --exclude tem precedência. Por padrão, o uso da opção --include impedirá que todas as tags sejam incluídas. os refs simbólicos e os refs quebrados nunca serão empacotados. Quando usado com --all, será um noop. Use --no-include para limpar e redefinir a lista de padrões.

--exclude <padrão>

Não empacote refs que correspondam ao padrão glob(7) fornecido. As repetições dessa opção acumulam padrões de exclusão. Use --no-exclude para limpar e redefinir a lista de padrões. Se uma ref já estiver empacotada, ao incluí-la com a opção --exclude não a desempacotará.

Quando usado com --all, empacota apenas as refs soltas que não correspondem a nenhum dos padrões --exclude fornecidos.

Quando usado com a opção --include, as refs fornecidas para a opção --include, menos as refs que sejam fornecidas para --exclude, serão empacotadas.

BUGS

A documentação mais antiga escrita antes da introdução do mecanismo "packed-refs" ainda pode dizer coisas como "o arquivo .git/refs/heads/<ramo> existe" quando significa "o ramo <ramo> existe".

GIT

Parte do conjunto git[1]

scroll-to-top