Da quello che vedo, ti riferisci a gestione della configurazione , tuttavia, se sono parti diverse del tuo sistema e vuoi metterle in controllo di versione per mantenerle coerenti, il meglio che posso pensare è:
A) Per mantenere un file (in XML, JSON o qualsiasi formato di serializzazione che ti piace) dove descrivi la versione di ogni cosa che ti serve per ciascun componente.
{
"JAVA": ">1.7.0_05",
"MYSQL": ">=5.0.28",
...
}
Chiedete a ciascun componente di importare questo file in costanti e di far valere i propri valori rispetto all'ambiente su cui sono in esecuzione, ci sono modi per ottenere queste informazioni ovunque sia distribuita l'applicazione. Se non corrispondono ai valori desiderati (o anche a intervalli di valori), lancia un avvertimento.
B) Se hai componenti diversi e usi qualcosa come Mercurial per il controllo della versione, allora tu potrebbe utilizzare qualcosa come la funzione di sottoreposizione , in cui il repository top / manager essenzialmente esegue la gestione della configurazione, questo è, il repository principale terrà traccia di quali versioni di ciascun componente vengono utilizzate in un determinato momento nel tempo. Immaginalo:
project_x #250 <- top repository at changeset 250
|--component_a #1232 <-component a at changeset 1232
|--component_b #23 <- component b at changeset 23
|--component_c #32 <- component c at changeset 32
E poi con la nuova versione di component_a (per esempio 1233) hai bisogno di una nuova versione di component_c , ma non di component_b , quindi aggiorna component_a e component_c e carica project_x in una nuova versione che registra tali modifiche
project_x #251 <- top repository at changeset 251, recording 1233 and 33 for a and c
|--component_a #1233 <-component a now at at changeset 1233
|--component_b #23 <- component b at changeset 23
|--component_c #33 <- component c now at changeset 33
Tieni presente che potrebbe non essere la migliore idea per memorizzare java o mysql nel controllo della versione, ma come accennato in precedenza, questa sarebbe una gestione della configurazione efficace per i componenti indipendenti dal progetto.
Se vuoi tenere traccia di Java, MySQL, ecc., "A)" fornisce un buon meccanismo per affermare tale configurazione.
Il repository "project_x" può avere un ramo di sviluppo e un ramo di produzione in cui tiene traccia di configurazioni di componenti differenti.
In sintesi
Avere un manifest a cui è possibile eseguire il codice e dichiarare la propria configurazione, e per i componenti indipendenti del progetto è possibile utilizzare i sotto-campi Mercurial (o i sottomoduli git) per tenere traccia della configurazione della versione tra di essi.