No Gentoo, a ferramenta para gerenciar mudanças induzidas por pacotes no / etc (chamada dispatch-conf) suporta rcs para rastrear alterações, mas isso não é realmente poderoso.
Eu tendem a versão meu / etc via git
, especialmente porque, usando diferentes ramificações, posso manter meu / etc o mais semelhante possível em diferentes distribuições possíveis, mantendo o máximo de coisas em um só lugar possível (para algumas áreas que obviamente falham, configuração do apache por exemplo, é realmente diferente em diferentes distribuições). Funciona assim:
Eu tenho meu master
repositório com meus arquivos de configuração padrão. Agora entro em contato com uma nova distribuição e crio uma nova ramificação com base na minha master
ramificação 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 a git mv file new_loc
. E está tudo bem. Volto master
e mudo esse arquivo porque adicionei alguma diretiva de configuração específica. Quando mesclo master
em minha debian
ramificação, o arquivo movido é alterado, para que eu possa alterar apenas a maioria das coisas em minha master
ramificação e apenas mesclar alterações em minha "distribuição" branches (normalmente eles tendem a ser mais uma mistura de ramos de distribuição e de propósito, um servidor debian tem algumas diferenças em relação a uma estação de trabalho debian, obviamente, mas os recursos ainda funcionam).
Então, basicamente, eu tenho uma "configuração genérica" master
e (para dizer em termos de programação orientada a objetos) herdo-as em meus ramos (que também podem herdar uns dos outros).
Além disso, git
os mecanismos de "seleção de cereja" confirmados (neste caso, as alterações para / etc /) têm sido bastante úteis para mim em momentos em que eu precisava apenas de partes de uma determinada configuração.
Agora, para algumas de suas idéias:
- Se eu precisasse de mais integração com o gerenciador de pacotes, provavelmente usaria scripts de wrapper para isso (no momento não).
- tratar versões upstream como uma ramificação funcionaria bem
git
, é apenas outra ramificação que às vezes você mescla (parcialmente)master
- A lista de ignorados no git é o arquivo .gitignore no seu repositório, para que seja coberto.