Programmeren in teams met CVS

In CVS (Concurrent Versions System), een programmeeromgeving voor teams, kunnen teamleden al het werk afzonderlijk van anderen uitvoeren in hun eigen workbench. Op een bepaald moment zullen zij hun werk met het team willen delen. Zij doen dit via een CVS-repository.

Vertakkingen

CVS maakt gebruik van een vertakkingenmodel ter ondersteuning van meerdere werkprojecten die enigszins los van elkaar staan, maar toch onderling van elkaar afhankelijk zijn. Vertakkingen worden door ontwikkelteams gebruikt voor het delen en integreren van werk in uitvoering. Een vertakking kan worden gezien als een gemeenschappelijk werkgebied dat wordt bijwerkt door teamleden wanneer zij wijzigingen in het project aanbrengen. Dit model maakt het voor individuen mogelijk om te werken aan een CVS-teamproject, hun werk te delen met anderen wanneer er wijzingen zijn aangebracht en het werk van anderen te openen naarmate het project zich ontwikkelt. Een speciale vertakking met de naam HEAD, staat voor de hoofdmoot van het werk in de repository (HEAD wordt ook vaak de trunk genoemd).

Werk met teamleden delen

Wanneer teamleden nieuw werk hebben geproduceerd, kunnen zij dit met andere delen door het vastleggen van de laatste wijzigingen in de vertakking. En als zij zelf het laatst geproduceerde werk van andere willen gebruiken, kunnen zij hun lokale werkgebieden bijwerken met de wijzigingen in de vertakking.   De vertakking verandert dus voortdurend en ontwikkelt zich doordat teamleden steeds nieuw werk indienen.

In feite weerspiegelt de vertakking de huidige status van het project. Om bij te blijven kunnen teamleden op elk gewenst moment hun werkgebieden bijwerken met de gegevens uit de vertakking.

Interactie met vertakkingen en workbenches

Optimistisch teammodel

CVS biedt twee belangrijke functies voor het werken in een team:

Het bijhouden van de historie is belangrijk zodat het huidige werk kan worden vergeleken met eerdere conceptversies, kan worden teruggegaan naar werk dat beter is, enzovoort. Coördinatie van het werk is van essentieel belang zodat er één definitie van de huidige projectstatus bestaat die het geïntegreerde werk van het team bevat. Deze coördinatie wordt verzorgd door het vertakkingenmodel.

Een optimistisch model is een model waarin elk lid van het team wijzigingen kan aanbrengen in elke resource waar hij of zij toegang toe heeft.   Omdat twee teamleden wijzigingen van dezelfde resource in de vertakking kunnen vastleggen, kunnen er conflicten ontstaan en zullen deze moeten worden opgelost. Dit model wordt optimistisch genoemd omdat ervan wordt uitgegaan dat er zelden conflicten zijn.

Aanbevolen werkstroom

Resources bestaan meestal niet volledig los van elkaar, maar bevatten vaak impliciete of expliciete vormen van dependency's van andere resources.  Webpagina's bevatten bijvoorbeeld koppelingen naar andere webpagina's en broncode bevat verwijzingen naar artefacten die zijn beschreven in resources van andere broncode.  Resources bestaan niet op een eiland.

Wanneer resources in de vertakking worden vastgelegd, kunnen de dependency's worden verstoord. Het is belangrijk om de integriteit van de dependency's te garanderen omdat de vertakking de huidige status van het project vertegenwoordigt: teamleden kunnen op elk moment de inhoud van de vertakking gebruiken als basis voor nieuw werk.

De ideale werkstroom is er dan ook een waarbij de vertakkingsintegriteit bewaard blijft.

De ideale werkstroom in stappen

De ideale werkstroom verloopt als volgt

  1. Maak een nieuwe start. Voordat u aan de slag gaat, werkt u de resources in het werkgebied bij met de huidige vertakkingsstatus. Als u zeker weet dat u geen lokaal werk hebt waaraan u bent gehecht, raakt u het snelst weer bij door de projecten waarin u geïnteresseerd bent te selecteren in de vertakking (of HEAD) en vervolgens Uitchecken te selecteren (of Vervangen door > Laatste uit repository als de projecten al lokaal bestaan). Hiermee overschrijft u de lokale resources met die van de vertakking.

  2. Breng de gewenste wijzigingen aan. Werk lokaal in uw workbench, waarbij u nieuwe resources maakt, bestaande resources wijzigt en uw werk lokaal opslaat.

  3. Synchroniseer. Wanneer u klaar bent om uw werk vast te leggen, synchroniseert u uw werk met de repository.

    1. Werk bij. Bestudeer de binnenkomende wijzigingen en voeg deze toe aan uw lokale workbench. Dit maakt het mogelijk om te bepalen of er wijzigingen zijn die een gevaar vormen voor de integriteit van het werk dat u wilt gaan vastleggen. Los conflicten op. Test opnieuw, voer integriteitcontroles uit (controleer bijvoorbeeld op gebroken hyperlinks, zorg dat uw code wordt gecompileerd, enzovoort).

    2. Leg vast. Nu dat u zich ervan heeft overtuigd dat uw wijzigingen zonder problemen kunnen worden geïntegreerd met de laatste vertakkingsinhoud, legt u uw wijzigingen vast in de vertakking. Voor de zekerheid kunt u de vorige stap herhalen als er nieuwe inkomende wijzigingen zijn.

Dit is uiteraard een ideale werkstroom. Onder bepaalde omstandigheden kunt u er zeker van zijn dat de inkomende wijzigingen geen invloed op uw werk hebben en kunt u zonder eerst bij te werken uw werk vastleggen. Over het algemeen moeten teamleden echter de bovenstaande werkstroom volgen om er zeker van te zijn dat de vertakkingsintegriteit niet per ongeluk in gevaar wordt gebracht.  

Meer informatie over CVS vindt u op http://www.cvshome.org.

Verwante concepten
CVS-repository's
Vertakkingen
Versies
Synchroniseren met een CVS-repository

Verwante taken
Een CVS-repositorylocatie maken

Een project uit een CVS-repository uitchecken
 
Resources in de workbench vervangen

Een nieuw project delen met CVS

Synchroniseren met de repository

Bijwerken

Conflicten oplossen

Samenvoegen vanaf een vertakking

Vastleggen van wijzigingen

Verwante onderwerpen
CVS