Variáveis e escopos nas configurações do git

 git

O git salva suas variáveis de configuração do repositório em arquivos, primeiro será mostrado como definir essas variáveis por linha de comando, direto no terminal.

Num segundo momento, quais arquivos armazenam as variáveis e qual sua ordem de prioridade.

A lista completa de variáveis pode ser encontrada aqui.

A seguinte estrutura será usada durante o post:

$ git config <escopo> <sessão>.<variável> <valor>

O . (ponto) funciona como namespace ou agrupamento para guardar varáveis, tenha em mente que as sessões são fornecidas pelo git, isto é, são predefinidas.

Essa formatação no comando é refletida nos arquivos de configuração do git, veja como é a sua estrutura:

[core]
    editor=vim

Então basicamente é:

[sessão]
    variável=valor

Alterando variáveis

Para definir o Vim como editor padrão, podemos usar:

$ git config core.editor vim

O editor é acionado, quando se precisa digitar uma mensagem para o commit ou quando se precisa editar uma mensagem de merge ou outras situações que se precise editar algum texto relacionado ao git.

Recuperar valor de uma variável

Agora que já sabe definir uma variável no git, mas e se quiser recuperar o valor de uma?

Então use a flag --get, recuperando o valor da variável “editor padrão”:

$ git config --get core.editor

Também existe a possibilidade de recuperar o valor da variável sem a flag --get, apenas omitindo o novo valor que seria atribuido, como nos primeiros exemplos, veja:

$ git config core.editor

Arquivos de configuração

No git existem arquivos de configuração que definem diferentes escopos para sua vigência. Ao digitar um comando com variável e valor, ela será salva no respectivo arquivo de configuração que definir.

Para isso, nos próximos tópicos será mostrado como definir em qual arquivo a variável será salva. Seguindo sempre a ordem de verificação:

  • Local
  • Global
  • Sistema

Agora de modo detalhado, será mostrado cada uma delas:

Configuração local

Alterar a configuração local, no escopo do repositório que esta digitando o comando:

$ git config <variável> <valor>

O manual da versão 2.4.5 diz que —local também deve funcionar, e que a configuração é salva no arquivo .git/config, o .git é uma pasta oculta que fica no seu repositório local e nela ficam armazenadas informaçóes sobre o seu repositório.

Configuração global

Alterar a configuração global, que afetara todos os repositórios da máquina em que foi usado o comando, mas para o usuário atual do sistema, fica armazenado em ~/.gitconfig (na home do seu sistema).

$ git config --global <variável> <valor>

Se o arquivo ~/.gitconfig não existir ele busca pelo arquivo $XDG_CONFIG_HOME/git/config.

A variável $XDG_CONFIG_HOME indica o diretório $HOME/.config, significa XDG Base Directory Specification é um diretório que visa uma centralização de user-specific data (configurações pessoais de cada usuário).

Como nem todos os programas seguem a XDG Base Directory Specification, eles criam seus arquivos de configuração em ~/, sempre iniciado por ponto, como: .bashrc, .zshrc, .vimrc etc.

Configuração do sistema

Alterar a configuração do sistema (system), que afetara todos os repositórios da máquina em que foi usado o comando, e para todos os usuários do sistema, fica armazenado em /etc/gitconfig

$ git config --system <variável> <valor>

Nota: a menos que esteja executando o comando como root, precisará utilizar sudo.

Selecionando o escopo com a flag --file ou -f

Também é possível indicar manualmente qual arquivo deve ser alterado, como exemplo, alterar o escopo global:

$ git config --file "~/.gitconfig" <variável> <valor>

Outra forma é utilizando a flag -f que tem o mesmo efeito

$ git config -f "~/.gitconfig" <variável> <valor>

Referências


comments powered by Disqus