Respostas:
Parece que você deseja usar os submódulos do Git .
O Git soluciona esse problema usando submódulos. Os submódulos permitem manter um repositório Git como um subdiretório de outro repositório Git. Isso permite que você clone outro repositório em seu projeto e mantenha seus commits separados.
Eu sempre usei links simbólicos para manter dois repositórios separados e distintos.
.gitignore
?
rsync -avh --delete --exclude='.git' REPO-B/ REPO-A/REPO-B-copy/
depois que houver alguma alteração no REPO-B
Sim, você pode fazer exatamente o que está pedindo com a hierarquia de arquivos que você desenhou. O Repo-B será independente e não tem conhecimento do Repo-A. O Repo-A acompanhará todas as alterações em seus próprios arquivos e nos arquivos do Repo-B.
No entanto, eu não recomendaria fazer isso. Toda vez que você alterar arquivos e confirmar no Repo-B, terá que confirmar no Repo-A. A ramificação no Repo-B interferirá no Repo-A e a ramificação no Repo-A será instável (problemas para remover pastas, etc.). Os submódulos são definitivamente o caminho a percorrer.
Você pode conseguir o que deseja (esse repositório REPO-A contém todos os arquivos, incluindo os da pasta REPO-B em vez de apenas uma referência) usando "git-subrepo":
https://github.com/ingydotnet/git-subrepo
Ainda funciona se alguns de seus colaboradores não tiverem o comando subrepo instalado; eles verão a estrutura completa da pasta, mas não poderão confirmar alterações nos sub-repositórios.