V prostředí týmového programování CVS (Concurrent Versions System) provádí členové týmu veškerou práci ve svých vlastních pracovních plochá, a jsou tak vzájemně odděleni. Nakonec však budou chtít výsledky své práce sdílet. K tomuto slouží Úložiště CVS.
CVS používá model větví pro podporu několika různých průběhů práce, které jsou sice do jisté míry oddělené, ale zároveň vysoce provázané. Větve jsou místem, kde vývojový tým sdílí a integruje probíhající práci. Větev lze chápat jako sdílený pracovní prostor, který je aktualizován členy týmu, když tito provádí změny v projektu. Tento model umožňuje jednotlivcům pracovat na týmovém projektu CVS, vzájemně sdílet práci s ostatními po provedení změn a přistupovat k výsledkům práce ostatních v průběhu vývoje projektu. Zvláštní větev označovaná jako HEAD představuje hlavní průběh prací v úložišti (HEAD často označujeme jako stub).
Když členové týmu postoupí s prací, mohou své výstupy sdílet potvrzením těchto změn do větve. Podobně platí, že když chtějí získat poslední dostupnou verzi práce, aktualizují své lokální pracovní prostory podle změn ve větvi. Větev se takto neustále mění a posouvá vpřed podle toho, jak členové týmu předávají výstupy své práce.
Větev de facto představuje aktuální stav projektu. Člen týmu může kdykoli aktualizovat svůj pracovní prostor z větve a ví, že má poslední aktuální verzi.
CVS nabízí dvě důležité funkce nezbytné pro týmovou práci:
Historii práce odeslané týmem
Způsob koordinace a integrace této práce
Udržování historie je důležité, aby bylo možné porovnat aktuální práci s předchozími koncepty, vrátit se případně zpět ke starší a lepší verzi apod. Koordinace práce je kritická, aby existovala pouze jedna definice aktuálního stavu projektu, obsahující integrovanou práci celého týmu. Tuto koordinaci zajišťuje model větví.
Optimistický model funguje tak, že libovolný člen týmu může provádět změny na všech prostředcích, ke kterým má přístup. Dva členové týmu mohou ve větvi potvrdit své změny týkající se stejného prostředku, a proto může docházet ke konfliktům, které je třeba řešit. Tento model se nazývá optimistický, protože se předpokládá, že ke konfliktům dochází jen zřídka.
Prostředky obvykle nejsou v izolaci, běžně obsahují ať již implicitní nebo explicitní závislosti na dalších prostředcích. Například webové stránky obsahují odkazy na jiné webové stránky. Zdrojový kód zase obsahuje odkazy na artefakty popisované v jiných prostředcích se zdrojovým kódem. Žádný prostředek není izolovaným ostrovem.
Prostředky se potvrzují v rámci větve, což může mít dopady na závislosti. Je nezbytné zajistit integritu těchto závislostí, protože větev představuje aktuální stav projektu: člen týmu může kdykoli převzít obsah větve jako základ pro novou práci.
Ideální sled prací je tedy takový, ve kterém je zachována integrita větve.
Ideální sled prací vypadá takto:
Začněte s čistým stolem. Před zahájením práce aktualizujte prostředky v pracovním prostoru dle aktuálního stavu větve. Pokud jste si jisti tím, že nemáte žádnou lokální práci, na které záleží, pak nejrychlejším způsobem jak začít pracovat je vybrat projekty o něž máte zájem z větve (nebo HEAD) a vybrat příkaz Zapůjčit (nebo Nahradit > Nejnovějším z úložiště, pokud projekty již existují lokálně). Tímto se přepíší vaše lokální prostředky odpovídajícími prostředky z větve.
Proveďte změny. Pracujte lokálně ve své pracovní ploše, vytvářejte nové prostředky, upravujte prostředky stávající a průběžně je ukládejte lokálně.
Synchronizujte. V okamžiku, kdy jste připraveni svoji práci potvrdit, synchronizujte ji s úložištěm.
Aktualizujte. Zkoumejte příchozí změny a přidávejte je do své lokální pracovní plochy. Takto můžete určit, zda existují změny, které by mohly mít vliv na integritu práce, kterou se chystáte potvrdit. Řešte konflikty. Opakovaně testujte, spouštějte kontroly integrity (například kontrolujte neplatná hypertextová spojení, zajistěte, že se kód kompiluje atd.).
Potvrďte. Nyní, když máte jistotu, že vaše změny jsou správně integrovány s poslední verzí obsahu větve, potvrďte je v rámci větve. Pokud si chcete být skutečně jisti, můžete předchozí krok ještě zopakovat, pokud se objeví nové změny.
Samozřejmě se jedná o ideální sled prací. Za určitých podmínek si můžete být jisti, že příchozí změny nemají na vaši práci vliv, a provést tedy potvrzení bez aktualizace. Členové týmu by se však obecně měli snažit o přibližné dodržování výše uvedeného sledu, aby se předešlo nechtěnému narušení integrity větve.
Další informace o CVS najdete na http://www.cvshome.org.
Úložiště CVS
Větve
Verze
Synchronizace s úložištěm CVS
Vytváření umístění úložiště CVS
Zapůjčení projektu z úložiště CVS
Nahrazení prostředků v pracovní ploše
Sdílení nového projektu pomocí CVS
Synchronizace s úložištěm
Aktualizace
Řešení konfliktů
Sloučení z větve
Potvrzení