Sono incaricato di cambiare la nostra base di codice di 10 anni da SVN a Git. Attualmente disponiamo di un unico repository monolitico contenente tutti i nostri progetti. Abbiamo condiviso librerie e progetti multipli usando dette librairie.
Ho cercato un modo per ospitare tutti i nostri progetti in repository separati. Ho esaminato sia i sottomoduli che i sottoalberi per la soluzione, ma non so quale scegliere a partire da ora. Una delle nostre core librairie è il nostro framework di database (vecchio e casalingo) che deve essere sempre aggiornato in ogni progetto che lo utilizza poiché tutte le nostre applicazioni funzionano con un database single-central.
A partire da ora, i rilasci sono tutti eseguiti manualmente dall'amministratore del repository. L'obiettivo è, in ultima analisi, quello di configurare il nostro server TFS in modo da avere un CI e accelerare il processo di distribuzione delle nostre applicazioni. Ecco un esempio di quello che sarebbe lo scenario migliore (penso). Ma prima, solo una breve lista di come appaiono le deprezze del progetto:
WebProject-A utilizza FrameworkLibrary-B
FrameworkLibrary-B
WebProject-C utilizza FrameworkLibrary-B
WindowsService-D utilizza FrameworkLibrary-B
Sto lavorando per aggiungere nuove funzionalità a WebProject-A. Queste funzionalità richiedono alcune nuove modifiche al modello dati, forse una nuova tabella o una nuova colonna. Ciò significa che ho bisogno di apportare modifiche a FrameworkLibrary-B. Ora anche WebProject-C e WindowsService-D sono collegati a FrameworkLibrary-B. Ciò significa che, al momento del check-in per FrameworkLibrary-B, ho bisogno di costruire A, B, C e D e distribuire A, C e D. Durante il check-in per il progetto A, ho bisogno di costruire A e B e distribuire A.
Molti dei nostri sviluppatori hanno poca esperienza con il controllo del codice sorgente (svn update, svn commit). L'obiettivo sarebbe quello di avere qualcosa di potente per la gestione dei sottoprogetti e, comunque, qualcosa che non spaventerà gli sviluppatori di Git. Avete qualche raccomandazione su quale sarebbe la soluzione migliore per la gestione del repository Git in questa istanza.