Nell'ambiente di programmazione in team di CVS (Concurrent Versions System) i membri del team eseguono le attività nei propri workbench, isolati dagli altri. In alcuni casi, tuttavia, potrebbe essere necessario condividere il lavoro. un repository CVS.
CVS utilizza un modello di sezione che supporti più fasi di lavoro, che sono in qualche modo isolate eppure altamente interdipendenti. Le sezioni sono le posizioni in cui un team di sviluppo condivide e integra il lavoro che si sta portando avanti. Una sezione può essere considerata come uno spazio di lavoro condiviso che viene aggiornato dai membri del team nel momento in cui questi apportano modifiche al progetto. Questo modello consente ai singoli membri di partecipare a un progetto di team CVS, condividere il proprio lavoro con gli altri e accedere al lavoro di altri membri mentre il progetto si evolve. Una sezione speciale, definita HEAD, rappresenta la fase principale del lavoro nella repository.
Mentre i membri del team realizzano il nuovo lavoro, lo condividono mediante l'esecuzione del commit, nella sezione, delle modifiche apportate. Allo stesso modo, quando i membri desiderano ricevere l'ultimo lavoro disponibile aggiornano gli spazi di lavoro locali per adeguarsi alle modifiche all'interno della sezione. In questo modo la sezione è costantemente modificata e si evolve man mano che i membri del team rilasciano il nuovo lavoro.
La sezione rappresenta effettivamente lo stato corrente del progetto. In qualsiasi momento un membro del team può aggiornare il proprio spazio di lavoro dalla sezione e individuare lo stato di aggiornamento del lavoro.
CVS fornisce due importanti funzioni necessarie per il lavoro in un team:
una cronologia del lavoro eseguito dal team
un sistema per coordinare e integrare tale lavoro
La conservazione di una cronologia è importante per poter confrontare il lavoro corrente con un lavoro precedente, per poter ritornare a un lavoro precedente che risulta migliore. Il coordinamento del lavoro è fondamentale poiché esiste una definizione dello stato di progetto corrente, contenente il lavoro integrato del team. Questo coordinamento viene fornito dal modello di sezione.
Un modello ottimistico è quello in cui tutti i membri del team possono apportare modifiche a qualsiasi risorsa a cui è possibile accedere. Poiché due membri del team possono eseguire il commit, nella sezione, di modifiche alla stessa risorsa, potrebbero verificarsi dei conflitti che dovranno essere gestiti. Questo modello viene detto ottimistico poiché si presuppone che i conflitti siano rari.
Normalmente le risorse non sono indipendenti ma contengono, implicitamente o esplicitamente, riferimenti ad altre risorse. Ad esempio, le pagine Web hanno collegamenti ad altre pagine Web e il codice di origine ha riferimenti ad elementi descritti in altre risorse del codice di origine. Nessuna risorsa è quindi isolata.
Quando viene eseguito il commit delle risorse nella sezione, tali riferimenti possono essere influenzati. È importante accertarsi dell'integrità delle dipendenze poiché la sezione rappresenta lo stato corrente del progetto: in qualsiasi momento un membro del team può prendere il contenuto della sezione e utilizzarlo come base per un nuovo lavoro.
Il flusso di lavoro ideale deve, quindi, essere caratterizzato dall'integrità della sezione.
Il flusso di lavoro ideale procede nel seguente modo:
Avviare ex-novo. Prima di iniziare il lavoro, aggiornare le risorse presenti nello spazio di lavoro con lo stato corrente della sezione. Se non è presente un lavoro locale di cui preoccuparsi, il modo più rapido per proseguire consiste nel selezionare dalla sezione (o HEAD) i progetti a cui si è interessati, quindi selezionare Estrai (o Sostituisci con > Più recenti da repository se i progetti esistono già a livello locale). In questo modo tutte le risorse locali verranno sovrascritte dalle risorse prelevate dalla sezione.
Applicare le modifiche. Lavorare localmente nel proprio workbench, creare nuove risorse, modificare risorse esistenti e salvare localmente.
Sincronizzare. Quando si è pronti a eseguire il commit del proprio lavoro, effettuare la sincronizzazione con il repository.
Aggiornare. Esaminare le modifiche in entrata e aggiungerle al proprio workbench locale. Ciò consente di determinare l'eventuale presenza di modifiche che potrebbero influire sull'integrità delle risorse di cui si sta per eseguire il commit. Risoluzione dei conflitti. Effettuare una nuova verifica, eseguire programmi di controllo di integrità (ad esempio, verificare eventuali collegamenti ipertestuali danneggiati, accertarsi della corretta compilazione del codice, ecc.).
Eseguire il commit. Quando si è certi che le modifiche verranno ben integrate nel contenuto della sezione, eseguire il commit delle modifiche nella sezione. Per prudenza, è possibile ripetere il passaggio precedente nel caso di nuove modifiche in entrata.
Naturalmente questo rappresenta un flusso di lavoro ideale. In certe condizioni, quando si ritiene che le modifiche in entrata non influenzino il proprio lavoro, si può scegliere di eseguire il commit senza effettuare l'aggiornamento. Tuttavia, i membri del team dovrebbero cercare di seguire un flusso di lavoro simile a quello appena descritto, in modo da essere certi che l'integrità della sezione non venga accidentalmente compromessa.
È possibile trovare ulteriori informazioni sul CVS nel sito https://www.cvshome.org.
Repository CVS
Sezioni
Versioni
Sincronizzazione con un repository CVS
Creazione di un percorso del repository CVS
Estrazione di un progetto da un repository CVS
Sostituzione di risorse nel workbench
Condivisione di un nuovo progetto mediante CVS
Sincronizzazione con il repository
Aggiornamento
Risoluzione dei conflitti
Unione da una sezione
Esecuzione del commit