É uma boa idéia usar o git para controlar a versão do arquivo de configuração?
Eu uso o Gentoo Linux e ele tem uma configuração bastante complexa. Minha pergunta é sábia para usar o git para a versão controlando meus arquivos de configuração?
Eu tenho alguns repositórios git em minha casa, meu palpite se eu colocar / home / ** para o meu .gitignore eles não vão causar 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 "/"?
— atevm
@AnthonyGeoghegan Eu quero rastrear meu diretório raiz "/", o que pode levar a conseqüências interessantes no futuro, de modo que o segmento vinculado responda apenas parcialmente à minha pergunta. A outra parte: é aconselhável usar o git para a versão controlando meus arquivos de configuração ainda sem resposta
@AnthonyGeoghegan obrigado. Eu atualizei a questão.
A resposta curta à sua pergunta é sim .
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 que alterações foram feitas e a mensagem de confirmação fornece o motivo porque a mudança foi feita. Se uma alteração tiver efeitos colaterais indesejados, posso revisar facilmente o log / histórico para ver qual alteração causou os efeitos.
Pessoalmente, eu seria cauteloso em rastrear todos os arquivos sob o / 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 manter o controle do meu pessoal arquivos de configuração / inicialização, por exemplo, configuração do Vim, funções Bash, aliases, etc. - semelhante à abordagem listada Como rastrear $ 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 sistema arquivos de configuração, eu uso o Git com Etckeeper para acompanhar arquivos no meu /etc diretório.
Uma questão a ser cautelosa é se os arquivos que estão sendo rastreados incluem links rígidos . Quando o Git é usado para verificar arquivos ou modificar a árvore de trabalho, desassocia os arquivos e, em seguida, os recria . Vejo Git, Dotfiles e Hardlinks para uma explicação mais completa.
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, de modo que todas as alterações /etc está monitorados.
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:
"Salvar alterações não confirmadas em / etc antes da execução do yum"
"Comprometendo mudanças 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 isto .
Ele também suporta o envio de arquivos de configuração para um repositório remoto (que deve, claro, ser privado).
Depois de instalar o pacote, você pode precisar 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 gostar de desativar o 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 de confirmação automatizadas.
Eu descomentei a linha apropriada em /etc/etckeeper/etckeeper.conf:
Ignorar determinados arquivos
Editar /etc/.gitignore para especificar os arquivos que não devem ser rastreados.
Após a configuração, execute os seguintes comandos:
Se o seu diretório atual é etcvocê pode correr regularmente git comandos, por exemplo,
Uau, foi muito útil e detalhado ... obrigado :)
Apenas para atualizar um muito resposta bem escrita: etckeeper durante a confirmação diária irá verificar primeiro se /etc é "impuro", ou seja, não possui arquivos não confirmados. Caso contrário, não será confirmado. Então, se o seu log de commits estiver cheio de commits diários, é provável que existam arquivos que mudaram diariamente e que você não adicionou ao .*ignore Arquivo :-)
Além disso, no Ubuntu, essa tendência é incômoda imediatamente executar um bzr init --__-- ... Eu recomendo sempre corrida etckeeper uninit -f depois da instalação.
Note que o etckeeper obviamente não está mais hospedado no github. Eles usam seu próprio sistema em sua homepage agora. Provavelmente alguma aversão M $ ao lado do autor. Pessoalmente, acho que uma decisão infeliz como agora você não pode facilmente relatar problemas e não pode ver o quão popular é o projeto.
— Michael Härtl
Obrigado @ MichaelHärtl Eu removi o link desatualizado para o repositório do GitHub.
Eu uso o git para rastrear áreas específicas do meu diretório pessoal. Pessoalmente, eu não percorria o 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 rep, mas queria entrar em sintonia.
Uau! Muito boa resposta por @AnthonyGeoghegan. Estou acreditando que isso não é tanto uma luta quanto eu imaginei originalmente.
— Michael Stilson
Eu também uso git para armazenar e manter meu dotfiles, mas em um git bare repository. Um guia detalhado pode ser encontrado Aqui . Estou usando dois repositórios, um para meus usuários dotfiles chamado myconf e um para dotfiles do root chamado rootconf.
Além disso, você pode usar ambas as configurações em várias 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 é para verificar a máquina atual mais; Nore não precisa de links!