Nós migramos muito código-fonte para o git e estamos muito felizes com a nossa solução atual. Gostaríamos de ter nossos arquivos de configuração de servidor com versão no mesmo sistema, mas há algumas coisas que não funcionam da maneira que gostaríamos e espero que alguém possa compartilhar sua experiência aqui.
Esta pergunta é semelhante a Usando o controle de revisão para arquivos de configuração do servidor? , mas temos alguns requisitos especiais que não funcionam com as sugestões dessa pergunta.
A configuração atual usa o subversion para arquivos de configuração. O repositório correspondente se parece com isso
/ # raiz do repositório + - www.domain.com/ # configuração para www | \ - etc / | \ - apache2 / + - dev.domain.com/ # configuração para dev | + - etc / | \--optar/ | \ - app1 / | \ - configuração conf / # para app1 no dev \ - staging.domain.com/ # configuração para teste
Com o subversion, isso funcionaria perfeitamente, porque é possível fazer o checkout de um subdiretório de um repositório. Além disso, você pode usar svn: externals para apontar para uma estrutura comum para várias configurações diferentes. Nós apenas tivemos que lidar com os arquivos .svn em todos os diretórios com versão. O Git, por outro lado , não possui svn: externals e checkouts esparsos sempre exigem que o caminho da raiz para o diretório real seja o mesmo.
Ao discutir a migração para o git, tentei anotar os principais requisitos para o versionamento da configuração do servidor:
- nós queremos apenas um único repositório
- deve ser possível enviar facilmente alterações para o controle remoto central
- changesets devem conter o verdadeiro autor
Existe uma boa maneira de ter toda a configuração em um repositório e ter apenas um subcaminho como cópia de trabalho? Atualmente, estou considerando duas abordagens, mas queria fazer essa pergunta aqui primeiro
- Se o repositório .git estiver em um local fixo, por exemplo, em algum lugar em / var , poderíamos vincular o subcaminho a partir do diretório de trabalho "target". O principal problema: eu não saberia uma maneira de "vincular" o arquivo / etc para outro diretório para importar apenas o conteúdo, exceto a simbolização de arquivos únicos
- Encontrei outra alternativa nessa questão do SO , sugerindo ter várias ramificações em um repositório. Isso certamente aumentaria a complexidade, mas eu podia nos ver tentando dessa maneira.
O uso do git em uma única máquina para o gerenciamento de arquivos de configuração funciona bem, mas acredito que deve haver alguém que o esteja usando da maneira que gostaríamos de usá-lo.
Obrigado
Kariem
/
causa das permissões de gravação.