Sob o Gentoo, a ferramenta para gerenciar mudanças induzidas por pacotes em / etc (chamado dispatch-conf) suporta o rcs para rastrear mudanças, mas isso não é realmente poderoso.
Eu tenho a tendência de usar my / etc via git
, especialmente porque usando diferentes branches eu posso manter meu / etc o mais parecido possível sobre distribuições diferentes quanto possível, mantendo o máximo possível em um lugar (para algumas áreas) que obviamente falha, a configuração do apache, por exemplo, é realmente diferente em diferentes distribuições). Funciona assim:
Eu tenho meu master
repo com meus arquivos de configuração padrão. Agora eu entro em contato com uma nova distro, então eu crio uma nova ramificação baseada na minha ramificação master
com base no nome da distribuição (neste exemplo, debian). O Debian mantém algum arquivo de configuração em um local diferente do meu master
, então eu faço um git mv file new_loc
. E está tudo bem. Volto para master
e altero esse arquivo porque adicionei uma diretiva de configuração específica, quando mescla master
em minha ramificação debian
, o arquivo movido é alterado, então basicamente posso alterar a maioria das coisas dentro de minha master
ramificação e apenas tem que mesclar as mudanças em minhas ramificações de "distribuição" (geralmente elas tendem a ser mais de uma combinação de ramificações de distribuição e finalidade, um servidor debian tem algumas diferenças para uma estação de trabalho debian obviamente, mas os recursos ainda funcionam). >
Então, basicamente, eu tenho uma "configuração genérica" em master
e (para dizer isso em termos de programação orientada a objeto), herdo-as em minhas ramificações (que também podem herdar umas das outras).
Além disso, os mecanismos de git
para "cherry-pick" commits (neste caso, alterações em / etc /) foram bastante úteis para mim, nos momentos em que eu precisei apenas de partes de uma determinada configuração.
Agora, algumas de suas ideias:
- Se eu precisasse de mais integração com o gerenciador de pacotes, provavelmente usaria scripts de wrapper para isso (no momento, não sei).
- tratar as versões de upstream como um branch funcionaria bem com
git
, é apenas outro branch que você às vezes mescla (parcialmente) emmaster
- A lista de ignorados no git é o arquivo .gitignore em seu repositório, de modo que seja coberto.