Se manualmente é a única maneira que esses arquivos são editados, você poderia colocar as versões canônicas no diretório de configuração do sistema e configurar um gancho post-commit no git que os copiaria para seus locais 'reais'.
Eu costumava ter todos os meus arquivos de configuração do sistema em um diretório para melhor gerenciamento, mas agora eu preciso usar algum controle de versão nele.
Mas o problema é que o git não entende links simbólicos que apontam para fora do repositório, e eu não posso inverter o papel (tendo os arquivos reais no repositório e os links simbólicos em seu caminho correto) já que alguns os arquivos são lidos antes do carregamento do kernel.
Acho que posso usar o uníssono para sincronizar os arquivos no repositório e nos caminhos deles, mas isso não é prático. E hard links provavelmente serão quebrados. Alguma idéia?
Se manualmente é a única maneira que esses arquivos são editados, você poderia colocar as versões canônicas no diretório de configuração do sistema e configurar um gancho post-commit no git que os copiaria para seus locais 'reais'.
Você pode usar o sinalizador --work-tree
e --git-dir
( git help git
, defina ambos como caminhos absolutos e crie um alias) para ter a pasta .git fora do diretório com versão.
No Debian e nas distribuições derivadas, você pode usar o etckeeper para gerenciar /etc
. É tão simples quanto instalar o etckeeper, rodando etckeeper init
uma vez e rodando etckeeper commit
quando você mudou algo.
Eu não sei se o etckeeper está diretamente disponível para o Arch Linux, mas existem sucesso relatórios na web.
O Etckeeper usa git hooks para lidar com metadados, como permissões, propriedade e links simbólicos.
Crie links físicos e não links suaves.
Eu tenho o mesmo problema, eu uso o etckeeper, e ele copia meus arquivos para o / etc, o que eu não quero.
Então, em vez de
ln -s /srv/www/site/apache.conf srv_site.com
faça
ln /srv/www/site/apache.conf srv_site.com
e funciona! : D
Tags symbolic-link git arch-linux