Programmera i grupp med CVS

I grupprogrammeringsmiljön i CVS (Concurrent Versions System) arbetar alla medlemmar i gruppen i sin egen separata arbetsmiljö. Förr eller senare vill de dela resultatet med andra. Det görs via en CVS-lager.

Grenar

I CVS används en grenmodell med funktioner för arbete som är något separerade men ändå beroende av varandra. Grenar är den plats där utvecklingsgrupper delar och integrerar pågående arbete. En gren kan betraktas som en delad arbetsyta som uppdateras av gruppmedlemmarna när de gör ändringar i projektet. Med den här modellen kan enskilda personer arbeta i CVS-grupprojekt, dela arbetet med andra när projektet ändras och nå andra personers arbete under tiden som projektet fortlöper. En speciell gren som kallas HEAD är huvudgrenen i lagret (HEAD kallas även stammen).

Dela arbete

När gruppmedlemmarna producerar nytt arbete delar de arbetet genom att bekräfta ändringarna till grenen. På samma sätt hämtar de senaste ändringarna som har gjorts genom att uppdatera de lokala arbetsytorna. Det betyder att grenen ändras kontinuerligt.

Grenen motsvarar aktuell projektstatus. Gruppmedlemmar kan när som helst uppdatera arbetsytorna och på det sättet få den senaste informationen.

Interaktioner med grenar och arbetsmiljöer

Optimal gruppmodell

CVS innehåller två viktiga funktioner som krävs för att kunna arbeta i grupp:

Underhåll av historiken är viktigt så att man kan jämföra aktuellt arbete med tidigare utkast, återgå till gammalt arbete som är bättre osv. Koordinering av arbetet är kritiskt. Det måste finnas en definition av aktuell projektstatus som innehåller gruppens integrerade arbete. Den här koordineringen sker via grenmodellen.

En optimal modell är en modell där alla medlemmar i en grupp kan göra ändringar i alla resurser han eller hon har access till. Eftersom två gruppmedlemmar kan bekräfta grenändringarna till samma resurs kan det uppstå konflikter som måste lösas. D en här modellen kallas optimal eftersom den utgår ifrån att konflikter är ovanliga.

Rekommenderat arbetsflöde

Resurser är vanligtvis inte isolerade. De innehåller i allmänhet implicita eller explicita beroenden till andra resurser. Exempel: webbsidor innehåller länkar till andra webbsidor och källkod har referenser till artefakter som beskrivs i andra källkodsresurser. Ingen resurs är fristående.

Beroenden kan påverkas när resurser bekräftas till grenen. Det är viktigt att bibehålla integriteten för beroendena eftersom grenen motsvarar aktuell projektstatus och gruppmedlemmarna när som helst kan hämta greninnehållet och använda det som bas för nytt arbete.

De ideala arbetsflödet är ett arbetsflöde där grenens integritet bibehålls.

Idealiskt arbetsflöde i steg

Ett idealiskt arbetsflöde ser ut på följande sätt:

  1. Starta uppdaterad. Innan du börjar ska du uppdatera resurserna på arbetsytan med aktuell grenstatus. Om du vet att du inte har något lokalt arbete som du behöver spara är det snabbaste sättet att markera de projekt du är intresserade av i grenen (HEAD) och välja Checka ut (eller Ersätt ed > Senaste från lagret om projektet redan finns lokalt). Då skrivs de lokala resurserna över med de från grenen.

  2. Göra ändringar. Arbeta lokalt i arbetsmiljön, skapa nya resurser, ändra befintliga resurser och spara ändringarna lokalt medan du arbetar.

  3. Synkronisera. När du är klar att bekräfta arbetet synkroniserar du det med lagret.

    1. Uppdatera. Granska inkommande ändringar och lägg till dem i den lokala arbetsmiljön. På det sättet ser du om det finns ändringar som påverkar integriteten hos det arbete du ska bekräfta. Lösa konflikter. Testa igen, gör integritetskontroller (t.ex. test av brutna hypertextlänkar och kontroll av att koden kan kompileras osv).

    2. Bekräfta. När du är säker på att ändringarna är väl integrerade med senaste greninnehållet bekräftar du ändringarna till grenen. Om du vill vara extra noggrann kan du upprepa föregående steg för att kontrollera om det finns nya inkommande ändringar.

Det här är förstås ett idealiskt arbetsflöde. Under vissa omständigheter kan du vara säker på att inkommande ändringar inte påverkar det du har gjort och i de fallen kan du bekräfta utan att uppdatera. Gruppmedlemmar bör dock följa ovanstående arbetsflöde så att grenens integritet bibehålls. 

Mer information om CVS finns på http://www.cvshome.org.

Närliggande begrepp
CVS-lager
Grenar
Versioner
Synkronisera med ett CVS-lager

Närliggande uppgifter
Skapa en CVS-lagerplats

Checka ut ett projekt från ett CVS-lager
 
Ersätta resurser i arbetsmiljön

Dela ett nytt projekt i CVS

Synkronisera med lagret

Uppdatera

Lösa konflikter

Sammanfoga från en gren

Bekräfta

Närliggande referens
CVS