É uma boa idéia usar o git para controlar a versão do arquivo de configuração?

13

Eu uso o Gentoo Linux e ele tem uma configuração bastante complexa. Minha pergunta é sábio usar o git para controlar meus arquivos de configuração?

Eu tenho alguns repositórios git em minha casa, meu palpite se eu colocar / home / ** no meu .gitignore eles não causarão problemas.

Atualização de esclarecimentos:

É um método inteligente usar o git para controlar meus arquivos de configuração de nível de sistema no diretório raiz "/"?

    
por atevm 08.02.2016 / 19:02

3 respostas

14

A resposta curta à sua pergunta é Yes .

Eu não hesitaria em recomendar o Git (ou qualquer outro software de controle de versão) para acompanhar os arquivos de configuração. Desde então, tenho sido mais produtivo (principalmente para configurar novas instalações) e tenho mais confiança em meus arquivos de configuração. Com o controle de versão, eu tenho um registro de quais as alterações foram feitas e a mensagem de confirmação fornece a razão por que a mudança foi feita. Se uma alteração tiver efeitos colaterais não intencionais, posso revisar facilmente o log / histórico para ver qual alteração causou os efeitos.

Pessoalmente, tenho receio de rastrear todos os arquivos no diretório raiz / . A lista de caminhos a serem ignorados pode se tornar grande e complicada. Eu prefiro manter cada conjunto lógico de arquivos em seu próprio repositório.

Eu uso manualmente o Git para acompanhar meus arquivos de configuração / inicialização pessoal , por exemplo, configuração do Vim, funções Bash, aliases, etc. - semelhante à abordagem listada em Como acompanhar $ HOME com git . Eu mantenho cada conjunto de arquivos em seu próprio repositório e uso links simbólicos para o diretório inicial.

Para arquivos de configuração do sistema , eu uso o Git com o Etckeeper para acompanhar arquivos no meu /etc directory.

Desvantagens

Um problema a ser cauteloso é se os arquivos que estão sendo rastreados incluem hard links . Quando o Git é usado para verificar arquivos ou modificar a árvore de trabalho, ele desvincula arquivos e os recria . Veja Git, Dotfiles e Hardlinks para uma explicação mais completa.

Etckeeper

O etckeeper pode ser usado para manter um histórico completo das alterações feitas em / etc. Ele rastreia os metadados de arquivos que os sistemas de controle de revisão normalmente não suportam, mas isso é importante para /etc , como as permissões de /etc/shadow .

Ele conecta-se a gerenciadores de pacotes como apt e yum e (em seu padrão configuração), é executado antes e depois da instalação para que todas as alterações em /etc sejam rastreado.

Se um pacote for instalado ou removido, todas as alterações não confirmadas em / etc serão confirmada antes da operação do pacote, para que haja dois commits:

  1. “salvar alterações não confirmadas em / etc antes da execução do yum”
  2. “confirmando alterações em / etc depois da execução do yum”

Eu usei isso com distribuições Debian e Red Hat e sei disso suporta o gerenciamento de pacotes do Arch. Eu não posso dizer quanta automação seria adicionar a um sistema Gentoo, mas um pacote está disponível para .

Também suporta o envio dos arquivos de configuração para um repositório remoto (que deve, claro, ser privado).

Configuração

Depois de instalar o pacote, pode ser necessário configurá-lo ( /etc/etckeeper/etckeeper.conf ), por exemplo, nos sistemas Ubuntu, o sistema de controle de versão padrão é alterado de Git para Bazaar. Você também pode querer desativar os auto-commits diários .

Autocomissos diários

As alterações podem ser automaticamente confirmadas por um cron job diário . Isso pode ser chato como o repositório pode ficar desordenado com várias mensagens automatizadas de commit.

Eu descomenteço a linha apropriada em /etc/etckeeper/etckeeper.conf :

sed -i '/AVOID_DAILY_AUTOCOMMITS/s|^#* *||' /etc/etckeeper/etckeeper.conf

Ignorar determinados arquivos

Edite /etc/.gitignore para especificar os arquivos que não devem ser rastreados.

Primeira execução

Após a configuração, execute os seguintes comandos:

sudo etckeeper init
sudo etckeeper commit "Initial commit"

Se o seu diretório atual for etc , você poderá executar comandos regulares de git , por exemplo,

sudo git status
sudo git log
    
por 09.02.2016 / 15:59
3

Eu uso o git para rastrear áreas específicas do meu diretório pessoal. Pessoalmente, eu não viajaria pelo caminho do rastreamento do diretório raiz, mas devo dizer que admiro sua ambição. :)

Talvez essa coleção de experiências possa fornecer uma ideia melhor do que você pode estar entendendo:

efeitos da inicialização do repositório git no diretório raiz do linux 3 :)

Desculpas por uma "resposta", em vez de simplesmente jogar o link em um comentário; no entanto, não o suficiente, mas queria entrar em sintonia.

Editar

Uau! Muito boa resposta por @AnthonyGeoghegan. Estou acreditando que isso não é tanto uma luta quanto eu imaginei originalmente.

    
por 09.02.2016 / 15:33
0

Eu também uso git para armazenar e manter meu dotfiles , mas em git bare repository . Um guia detalhado pode ser encontrado aqui . Estou usando dois repositórios, um para meus usuários dotfiles chamados myconf e um para os arquivos de ponto do root chamado rootconf .

Além disso, você pode usar ambas as configurações em muitas máquinas, diferentes distribuições Linux ou máquinas virtuais: Basta criar uma nova ramificação para uma configuração distinta. Então você evita misturar código no mesmo arquivo (por exemplo, .bash_alias ): Não é chato se você verificar a máquina atual mais; Nore não precisa de links!

    
por 31.10.2018 / 19:21