Meus primeiros testes com repositórios git aninhados não sofreram nenhum desses três problemas. Você não precisa adicionar .git em gitignore ; o conteúdo de todos os diretórios .git é ignorado automaticamente.
Os outros arquivos (por exemplo, no mesmo diretório que .git ) podem ser confirmados no repositório externo.
Então eu achei que o etckeeper poderia manter o rastreamento de todos os arquivos, enquanto os subdiretórios poderiam ter seu histórico gravado com mais cuidado em repositórios específicos. As duas histórias não sabem nada sobre o outro.
Eu só notei um problema mais tarde. Quando eu enviei um diretório que é um repositório git e contém commits em si, e eu ainda não havia comprometido arquivos daquele diretório no repositório externo, então ele aparece como um %código%. O conteúdo é representado apenas por um ID de confirmação. Subproject parece mostrar isso como gitk .
Isso soa como o git realmente quer reconhecê-los como Submodule . Eu particularmente não entendo git-submodule , só sei que ele tem uma reputação de ser um pouco confuso.
Eu também notei que o arquivo git-submodule está cheio de arquivos dos diretórios .etckeeper , mesmo se o git estiver usando submódulos.