Potrebbe essere più una questione di fiducia, o di questioni legali (vale a dire avere il giusto contratto legale, con l'aiuto degli avvocati), piuttosto che una questione tecnica. BTW, sono molto scettico all'idea di nascondere alcuni dei tuoi codice sorgente dai tuoi partner . Leggi le astrazioni che perdono e circa software offuscamento .
how can we achieve so that team B (outsourced) gets access to only a part of a project that is necessary for team B to complete it?
Potresti progettare e organizzare il codice sorgente condiviso (o condivisibile) come una autonoma. O forse come alcuni plug-in . Ovviamente, devi progettare saggiamente un'interfaccia API stabile. Puoi anche definire e utilizzare un protocollo di applicazione tra le due parti (magari in esecuzione in diversi processi e usando alcuni comunicazione inter-processo ).
Ma questo deve essere pensato molto presto nella fase di progettazione della tua architettura del software .
Si noti che git ha moduli secondari . Forse potrebbe esserti utile.
Ma hai ancora bisogno di refactoring e ri-architettura del tuo progetto con saggezza.
(Sono un free software entusiasta, quindi non capisco i tuoi limiti, ma se non ci hai pensato prima, sei in gran casino
Forse hai bisogno di spiegare al tuo manager o cliente che il codice sorgente deve essere condiviso tra diversi team che lavorano su di esso. IMHO questo è l'approccio più (tecnicamente) realistico. Ma questa non è una domanda tecnica, quindi è fuori tema qui.