Teamprogrammering med CVS

I CVS-teamprogrammeringsmiljøet (Concurrent Versions System) udfører teammedlemmerne alt deres arbejde på arbejdsbænke, isoleret fra andre. Og til sidst deler de deres arbejde med de øvrige. Det gør de via et CVS-opbevaringssted.

Grene

CVS bruger en grenmodel til at understøtte flere arbejdsforløb, der i nogen grad er isoleret fra andre, men stadig meget afhængige af hinanden. Grenene er de steder, hvor et udviklingsteam deler og integrerer igangværende arbejde. En gren kan betragtes som et delt arbejdsområde, der opdateres af teammedlemmer, når de foretager ændringer af projektet. Denne model giver enkeltpersoner mulighed for at arbejde på et CVS-teamprojekt, dele deres arbejde med andre, når der sker ændringer, og få adgang til andres arbejde, efterhånden som projektet udvikles. En særlig gren, der kaldes HEAD, repræsenterer hovedarbejdsforløbet på opbevaringsstedet (HEAD kaldes ofte stammen).

Del arbejde

Når teammedlemmerne har produceret nyt arbejde, deler de dette arbejde ved at committe ændringerne over for grenen. Tilsvarende opdaterer de deres lokale arbejdsområder med ændringerne på grenen, når de vil hente det senest tilgængelige arbejde. På denne måde ændres grenen hele tiden og bevæger sig fremad, efterhånden som teammedlemmerne sender nyt arbejde.

Grenen repræsenterer reelt projektets aktuelle tilstand. Et teammedlem kan til enhver tid opdatere sit arbejdsområde ud fra grenen og vide, at han eller hun er ajourført.

Interaktion med grene og arbejdsbænke

Optimistisk teammodel

CVS indeholder to vigtige funktioner, der kræves for at arbejde i et team:

Det er vigtigt at vedligeholde historikken, så man kan sammenligne det aktuelle arbejde med tidligere kladder, vende tilbage til tidligere arbejde, som er bedre, og så videre. Det er essentielt at koordinere arbejdet, så der kun findes én definition af den aktuelle projekttilstand, der indeholder teamets integrerede arbejde. Denne koordinering sker i grenmodellen.

En optimistisk model er en model, hvor alle medlemmer af teamet kan foretage ændringer af enhver ressource, som han eller hun har adgang til. Da to teammedlemmer kan committe ændringer af samme ressource til grenen, kan der opstå konflikter, som skal behandles. Denne model kaldes optimistisk, fordi det antages, at konflikter er sjældne.

Anbefalet arbejdsgang

Normalt findes ressourcer ikke isoleret. De indeholder typisk implicitte eller eksplicitte afhængigheder af andre ressourcer. Websider har f.eks. link til andre websider, og kildekoden har referencer til dele, der er beskrevet i andre kildekoderessourcer. Ingen ressource er en ø.

Efterhånden som ressourcer committes til grenen, kan disse afhængigheder blive påvirket. Det er vigtigt at sikre integriteten af afhængighederne, da grenen repræsenterer den aktuelle projekttilstand. Et teammedlem kan når som helst bruge grenens indhold som grundlag for nyt arbejde.

Den ideelle arbejdsgang er derfor en arbejdsgang, hvor grenintegriteten bevares.

Den ideelle arbejdsgang i punkter

Den ideelle arbejdsgang er som følger:

  1. Start med friske data. Opdatér ressourcerne i arbejdsområdet med tilstanden af den aktuelle gren, inden du starter arbejdet. Hvis du er sikker på, at du ikke har noget lokalt arbejde, der betyder noget, er den hurtigste metode til at komme på omgangshøjde at markere de projekter, du er interesseret i, fra grenen (eller HEAD) og vælge Tjek ud (eller Erstat med > Sidste fra opbevaringsstedet, hvis projekterne allerede findes lokalt). Herved overskrives dine lokale ressourcer med ressourcerne fra grenen.

  2. Foretag ændringer. Arbejd lokalt på Arbejdsbænken. Opret nye ressourcer, redigér eksisterende og gemt lokalt undervejs.

  3. Synkronisér. Synkronisér dit arbejde med opbevaringsstedet, når du er klar til at committe arbejdet.

    1. Opdatér. Undersøg indgående ændringer, og tilføj dem til din lokale arbejdsbænk. Herved kan du finde ud af, om der er ændringer, som kan påvirke integriteten af det, du er i færd med at committe. Løs konflikter. Test igen, udfør integritetskontrol - kontrollér f.eks. for brudte hypertekstlink, sørg for, at koden kompileres korrekt, osv.

    2. Commit. Nu, hvor du er sikker på, at dine ændringer er integreret med det seneste grenindhold, skal du committe ændringerne over for grenen. Det kan eventuelt være klogt at gentage det tidligere trin, hvis der er nye indgående ændringer.

Dette er naturligvis en ideel arbejdsgang. Under visse betingelser kan du være sikker på, at de indgående ændringer ikke påvirker dig, og vælge at committe uden at opdatere. Men generelt bør teammedlemmer gøre en indsats for at følge en arbejdsgang som ovenstående for at sikre, at grenintegriteten ikke ved et uheld kompromitteres. 

Der er flere oplysninger om CVS på adressen http://ximbiot.com/cvs/.

Relaterede begreber
CVS-opbevaringssteder
Grene
Versioner
Synkronisér med CVS-opbevaringssted

Relaterede opgaver
Opret placering af CVS-opbevaringssted

Tjek projekt ud fra CVS-opbevaringssted
 
Erstat ressourcer på arbejdsbænk

Del nyt projekt vha. CVS

Synkronisér med opbevaringssted

Opdatér

Løs konflikter

Flet fra gren

Udfører commit for

Relaterede referencer
CVS