Lidando com configurações específicas da máquina ao usar o git para gerenciamento de configuração

3

Eu tenho usado um repositório do git para gerenciar minhas configurações de sistemas por um tempo agora. Eu usei a documentação sobre tutoriais do Oceano Digital aqui . Praticamente tenho um repositório remoto em um servidor. Faça um clone do repositório. Em seguida, vincule simbolicamente os arquivos e diretórios de pontos ao diretório inicial. Se eu mudar um arquivo de configuração eu apenas faço um push git para o repositório remoto.

O problema que estou correndo é que eu preciso de uma versão diferente de algumas configurações. Por exemplo, a configuração de .i3blocks é diferente dependendo se estou usando minha estação de trabalho, meu laptop ou minha máquina de trabalho. Eu não estou muito familiarizado com o git, então não tenho certeza de como lidar com isso. Alguma sugestão?

    
por emilan 20.09.2016 / 23:16

2 respostas

3

Este não é realmente um problema git. Em vez disso, você precisa pensar sobre que tipo de arquivos de configuração você tem, quais opções eles fornecem para ler em arquivos adicionais e como eles divergem para sistemas diferentes.

Como exemplo, para o seu ~/.bashrc , você pode ter um arquivo mestre que leia configurações específicas do host com uma linha source .

DOTFILES=~/.dotfiles
source $DOTFILES/$HOSTNAME.bashrc 

Com outros programas que não permitem esse tipo de operação em sua sintaxe de configuração, você pode precisar ter vários arquivos para seus diferentes sistemas no repositório e apenas vincular o arquivo apropriado.

ln -s ~/.dotfiles/i3blocks.$HOSTNAME ~/.i3blocks 

Você pode até combinar isso com alguns scripts que constroem o arquivo a partir de blocos de construção ou com algum mecanismo de modelagem e que é acionado por um gancho git.

    
por 21.09.2016 / 00:03
0

Eu faço algo semelhante e uso ramificações diferentes para diferentes configurações. Dessa forma, quando você está em uma determinada máquina, você pode fazer git checkout config-laptop ou git checkout config-htpc , etc., para pegar os arquivos desejados.

Além disso, se você fizer alterações nos arquivos de uma ramificação que deseja propagar para outras pessoas, poderá mesclá-las nas ramificações. Usar uma ferramenta como o GitKraken permite mesclar apenas as seções (pedaços) - ou até mesmo linhas simples - que você deseja.

    
por 21.09.2016 / 04:22