Un VCS è la strada da percorrere. Quello di cui hai bisogno è decidere come archiviare il codice / gli elementi di configurazione nel tuo repository VCS. La prima domanda che vorrei porre è quanto sono stabili questi componenti riutilizzabili?
Se non cambieranno molto, allora inserirli in un repository / database / progetto / cartella / (qualsiasi terminologia utilizzata dal VCS) e etichettarli in base al prodotto a cui corrispondono. Poi, quando è il momento di fare un po 'di codice, lo sviluppatore ottiene il sistema su cui stanno lavorando dal suo repository e poi le cose condivise, usando l'etichetta appropriata per ottenere le versioni appropriate.
Se le librerie condivise cambiano solo un po 'nel tempo, quindi aggiungi delle diramazioni per le linee di sviluppo che ne hanno bisogno e usa le etichette. Ora puoi ottenere i file / le versioni richiesti come sopra usando le etichette appropriate. È quindi necessario un processo di gestione per aggiornare periodicamente il trunk con questi rami e testarlo con tutte le applicazioni interessate.
Se ci sarà molta personalizzazione, allora probabilmente dovrai mantenere repository separati per progetto in quanto sarà più facile / economico gestirlo su un gruppo di repository con un sacco di rami / etichette / gruppi di promozione e il test di integrazione che ciò comporta.
Per estrarli, usa qualche strumento se puoi essere preso la briga di capire come configurarlo. Oppure, scrivi uno script veloce per ottenere i file necessari per ogni progetto e crea la struttura del file per il progetto quando hai bisogno di iniziare qualche sviluppo. Qualcosa come questo codice di psudo:
required_label = "version 1.1.1"
project = "funStuff"
destination = "server/share/folder/"
get from vcs project $project $required_label into $destination
get from vcs "library project" $required_label into $destination/lib/
echo "mettiti al lavoro"
Potrebbe non funzionare se hai utilizzato un'integrazione di gestione delle versioni integrata IDE. Potrebbe essere necessario che gli sviluppatori utilizzino l'interfaccia di VCS per controllare gli elementi di configurazione in entrata / uscita che verranno modificati.
La chiave per fare questo lavoro è assicurarsi che il sistema di etichettatura appropriato sia applicato dal VCS: quelli che ho usato consentono di impostare una regola che impone l'aggiunta o un'etichetta al momento del check-in o di avere la struttura per etichette fluttuanti. Utilizzare come appropriato.