O que faço (com os mesmos objetivos) é colocar meus arquivos de configuração em um subdiretório ~/lib
e ter links simbólicos no meu diretório pessoal, por exemplo .emacs -> lib/emacs/dot.emacs
,. Eu apenas mantenho os arquivos de configuração que escrevi explicitamente sob controle de versão; meu diretório pessoal contém muitos arquivos de pontos criados automaticamente que não estão sob controle de versão. Assim, ~/lib
está sob controle de versão e meu diretório inicial não.
Eu tenho um script que cria os links simbólicos dos arquivos em ~/lib
. Quando crio uma conta em uma nova máquina, preencha-a fazendo check-out ~/lib
e executando esse script.
Minha experiência é com CVS, não com git, portanto não é 100% transferível. Uma das razões pelas quais eu não coloquei meu diretório inicial diretamente no CVS é que isso ~/.cvsignore
se aplicaria a todos os meus checkout do CVS e não apenas ao meu diretório inicial; O git não tem esse problema. A desvantagem dessa abordagem, em comparação com o diretório inicial sob controle de versão, é que você não pode git status
distinguir entre um arquivo que você decidiu explicitamente ignorar (que seria listado no arquivo ignorar, portanto não exibido) e um arquivo sobre o qual você não tem opinião (que seria exibido com a ?
).
Alguns arquivos precisam ser diferentes em máquinas diferentes. Eu os coloquei em um diretório chamado ~/Local/SITENAME/lib
e crie links simbólicos para eles também ou (para os formatos de arquivo que o suportam) têm uma diretiva de inclusão no arquivo em ~/lib
. Eu também tenho um link simbólico ~/Here -> ~/Local/SITENAME
. Como o git, diferentemente do CVS, foi projetado para suportar repositórios quase similares, mas não idênticos, pode haver uma maneira melhor de gerenciar arquivos específicos da máquina. Na verdade, alguns dos meus arquivos de ponto não são links simbólicos, mas são gerados automaticamente a partir de conteúdo sob ~/lib
e ~/Here
.