Risposte:
Sembra che tu voglia usare i sottomoduli Git .
Git risolve questo problema utilizzando sottomoduli. I sottomoduli ti consentono di mantenere un repository Git come sottodirectory di un altro repository Git. Ciò ti consente di clonare un altro repository nel tuo progetto e mantenere separati i tuoi commit.
Ho sempre usato collegamenti simbolici per mantenere due repository separati e distinti.
.gitignore
?
rsync -avh --delete --exclude='.git' REPO-B/ REPO-A/REPO-B-copy/
dopo che ci sono modifiche a REPO-B
Sì, puoi fare esattamente quello che stai chiedendo con la gerarchia dei file che hai disegnato. Repo-B sarà indipendente e non avrà alcuna conoscenza di Repo-A. Repo-A terrà traccia di tutte le modifiche nei propri file e nei file di Repo-B.
Tuttavia, non consiglierei di farlo. Ogni volta che cambi file e esegui il commit in Repo-B, dovrai eseguire il commit in Repo-A. La ramificazione in Repo-B creerà problemi con Repo-A e la ramificazione in Repo-A sarà instabile (problemi durante la rimozione delle cartelle, ecc.). I sottomoduli sono sicuramente la strada da percorrere.
È possibile ottenere ciò che si desidera (il repository REPO-A contiene tutti i file, inclusi quelli nella cartella REPO-B anziché solo un riferimento) utilizzando "git-subrepo":
https://github.com/ingydotnet/git-subrepo
Funziona ancora se alcuni dei tuoi contributori non hanno installato il comando subrepo; vedranno la struttura delle cartelle completa ma non saranno in grado di eseguire il commit delle modifiche ai subrepos.