# Het handboek van &cervisia;

Bernd Gehrmann

    &Bernd.Gehrmann.mail;

Carlos Woelz

    carloswoelz@imap-mail.com

&Fabrice.Mous;&Tom.Albers;&Rinse.Devries;&Bram.Schoenmakers;&Freek.de.Kruijf;
1999 2000 2001 2002 &Bernd.Gehrmann;
2004 Carlos Woelz
&FDLNotice;
2008-09-08
3.1.1

&cervisia; voorziet in een grafische weergave van &CVS;.

KDE kdesdk Cervisia CVS versie beheer revisie beheer

## Inleiding

&cervisia; is een frontend van een gebruikersvriendelijk versiecontrolsysteem. Het doel is de ondersteuning van &CVS; en andere programma's voor versiecontrolsysteemen in een gemeenschappelijk interface, met oplossen van conflicten, verschillen en tonen van de historie, status van de bestanden van de werkkopie en ondersteuning voor de meeste functies van een versiecontrolsysteem. U kunt &cervisia; verkrijgen door de kdesdk-module te bouwen of het kdesdk-pakket uit uw distributie te installeren. Op dit moment wordt alleen &CVS; ondersteund, maar andere versiecontrolsystemen kunnen in de toekomst worden geïntegreerd.

Een versiecontrolsysteem is een hulpmiddel om verschillende versies van bestanden op te slaan, te beheren en te distribueren. &CVS; is een versiecontrolsysteem. Het biedt u de mogelijkheid om uw wijzigingen gemakkelijk te delen, zodat elke medewerker op dezelfde tijd met zijn eigen kopieën kan werken, zonder vrees om elkaars wijzigingen te overschrijven. Het biedt het herstellen van eerdere versies (nuttig bij het nalopen van bugs), de creatie van branches (voor experimentele ontwikkeling of voor het vrijgeven van code) en meer.

De hoofd-repository bevat gebruikelijk een samenwerkingsproject (commercieel of niet), maar u kunt voordeel hebben bij de mooie revisiecontrolemogelijkheden die &CVS; biedt zelfs voor een project dat u alleen ontwikkeld. Het is gemakkelijk om een lokale repository op te zetten en u zult de mogelijkheid hebben om wijzigingen te volgen die bugs veroorzaken, wijzigingen terugfraaien, per ongeluk verlies van informatie vermijden, &etc;

De repository bevat de projectbestanden en elke medewerker heeft zijn eigen lokale kopie, genaamd werkkopie of sandbox; men kan dan eigen wijzigingen aan de hoofdrepository toevogen (een proces dat "committing" of vastleggen wordt genoemd) en/of de eigen kopie bijwerken om recente wijzigingen, die door andere medewerkers zijn gemaakt, te laten zien.

## Laten we beginnen

### Toegang tot de repository

In deze sectie, tonen we hoe u de basis functionaliteit van het versiecontrolsysteem &cervisia; kunt gebruiken om modules uit checken uit de repository en er mee te werken. Om dat te kunnen doen moet u toegang hebben tot de repository als een client, wat betekent dat iemand (waarschijnlijk de beheerder van de &CVS;-repository) u een account op de servermachine heeft gegeven. Als alternatief kunt u zelf gemakkelijk een lokale repository voor uw eigen project aanmaken.

Als u van plan bent om een complex project te ontwikkelen, dan is het een goed idee om de &CVS; features te gebruiken, zelfs als u de enige ontwikkelaar bent. U kunt alle wijzigingen in de werkkopie maken en &cervisia; gebruiken (of elk ander &CVS; hulpmiddel) om bij te werken en vast te leggen. Op deze manier, krijgt u de mogelijkheid om wijzigingen te volgen die bugs hebben veroorzaakt, wijzigingen terugdraaien, ongewild verlies van informatie vermijden, &etc; Door &cervisia; te gebruiken is het eenvoudig om een lokale repository aan te maken.

Een lokale repository aanmaken

- Open de dialoog Nieuwe repository aanmaken (cvs init) door te kiezen Repository Aanmaken....

- Druk op de knop ... om de map te selecteren waarin u de repository wilt aanmaken of voer zijn locatie in in het tekstvak. Als u bijvoorbeeld de repository in de map `/home/gebruiker` wilt plaatsen en het de naam `cvsroot` wilt geven, dan kunt u `/home/user/cvsroot` in het tekstvak invoeren of de map `/home/user` selecteren met de bestandkiezer en `cvsroot` toevoegen.

- Bevestig dit via de knop OK. &cervisia; zal de nieuwe map voor de repository aanmaken en initialiseren.

- Nu kunt u uw huidige werk importeren in de repository of eenvoudig een map aanmaken in de repository om vanuit het niets een nieuwe module te beginnen.

&cervisia; biedt een geïntegreerde front-end om al uw locaties met een repository te beheren, via de dialoog Toegang tot repositoryn instellen. Om deze weer te geven kies Repository Repositories....

Een schermafdruk van de dialoog Toegang tot repositories van &cervisia;

Een schermafdruk van de dialoog Toegang tot repositories van &cervisia;

Er zijn verschillende methoden om toegang te krijgen tot een &CVS;-repository. Het kan worden bereikt via authemticatie met wachtwoord (:pserver:), secure shell (met :ext:), lokale repository (:local:), &etc; Het format voor de locatie van de repository is (optionele items staan tussen rechte haakjes):

`[:methode:][[gebruiker][:wachtwoord]@]hostnaam[:[poort]]/pad/naar/repository`

Niet alle items (gebruiker, wachtwoord, hostnaam, poort) zijn altijd nodig voor toegang tot de repository. De vereiste informatie hangt af van de gebruikte toegangsmethode, die als volgt kan worden gecategoriseerd:

Lokaal

  De lokale toegangsmethode is de standaard methode van de &CVS;. Het is daarom optioneel om de :local: methode toe te voegen aan de locatie van de repository: u kunt eenvoudig het pad naar de map met de &CVS;-repository invoeren en het is toegankelijk vanaf uw computer, zoals `/pad/naar/repository` of een voor beeld uit het echte leven te geven, `/home/cvs`.

  Het kan fysiek op een schijf aanwezig zijn die is aangekoppeld via NFS, maar dat is een irrelevant detail. Als u een lokale repository hebt aangemaakt, dan is de locatie eenvoudig het pad ernaar.

↱

  De locatie van de repository ziet er dan zoiets als volgt uit: `:ext:gebruikersnaam@host.url.org:/pad/naar/repository`

  Deze methode vereist dat u een gebruikersaccount hebt op de server (in dit geval host.url.org) en gebruikt een remote shell voor communicatie. Standaard gebruikt &CVS; hiervoor ↱, alhoewel ↱ als onbetrouwbaar is bestempeld en vervangen is door &ssh;.

  Indien u &ssh; wilt gebruiken, stelt u de omgevingsvariabele $`CVS_RSH` in op &ssh;. Dit is alleen nodig als u het `cvs`-commando gebruikt. &cervisia; ondersteunt dit probleemloos.

  Hou er rekening mee dat &cervisia; geen mogelijke verzoeken voor een wachtwoord van de servermachine kan beantwoorden. U moet er zeker van zijn dat de remote login werkt zonder dat u iedere keer een wachtwoord moet invoeren. Met de "plain vanilla" ↱ kan dit worden bereikt door bijvoorbeeld het bestand `.rhosts` in uw persoonlijke map aan te maken met een lijst van "vertrouwde servers" (in het engels "trusted hosts", zie de manpage van ↱)

  Met &ssh; kan dit worden bereikt door het kopiëren van de publieke sleutel (`$`HOME`/.ssh/identity.pub`) naar de server. In dat geval moet de sleutel niet versleuteld worden met een wachtwoordzin (zie de &ssh; manpagina en de &CVS;/SSH FAQ op SourceForge). Wanneer u twijfelt over de juiste instellingen kunt u het beste contact opnemen met uw systeembeheerder.

pserver

  De naam van de repository ziet er dan als volgt uit: `:pserver:gebruikersnaam@cvs.kde.org:/home/kde`

  Deze methode benadert de server met een speciaal protocol met een relatief zwakke authenticatie (`pserver` staat voor password authenticatie). Voordat u zo'n server kunt gebruiken, hebt u een gebruikersnaam en wachtwoord nodig, dat u gegeven is door de beheerder van de &CVS;-server, waarna u zich aan moet melden. Merk op dat uw gebruikersnaam en wachtwoord van &CVS; niet noodzakelijk die van het systeem zijn. Voordat u toegang krijgt tot de &CVS;-server moet u zich aanmelden.

  Open-source projecten bieden typisch anonieme toegang via &CVS; tot broncode. Dit betekent dat u gemakkelijk de laatste broncode kan pakken, kan wijzigen en patches (differences) maken tegen de repository zonder om te vragen om toegang met een &CVS; account. Als algemene regel geldt dat anonieme &CVS; wachtwoord-authenticatie (:pserver:) gebruikt en een alleen-lezen repository is, waarin u uw wijzigingen niet direct kunt uploaden.

De toegangsmethode wetend en de locatie van de repository, kunt u het toevoegen aan de lijst met repositories van &cervisia;:

Een nieuwerepositorye toevoegen

- Open de dialoog Toegang tot repositories instellen door menu-item Repository Repositories... te kiezen.

- Druk op de knop Toevoegen... om de dialoog Repository toevoegen te openen.

- Voer de locatie van de repository in in het tekstvak Repository:. &cervisia; zal automatisch de gebieden in de dialoog uitschakelen die niet relevant zijn voor de toegangsmethode die u hebt ingevoerd.

- Als u de ext-methode voor toegang tot de repository gebruikt, voer dan de remote shell in, die u wilt gebruiken (⪚ &ssh;), in het tekstvak Remote shell gebruiken (alleen voor :ext:-repositories):.

- Druk op OK. De repository, die u zojuist hebt toegevoegd aan de lijst met repositories, is dan te zien.

- Als de toegangsmethode tot de repository die u hebt ingevoerd is via wachtwoord-authenticatie (pserver), dan is het nodig u eerst aan te melden alvorens te verbinden met de server. Klik op de repository in de lijst om deze te selecteren en druk op de knop Aanmelden.... voer uw wachtwoord in in de opkomende dialoog.

  Als u met succes uw wachtwoord hebt ingevoerd, dan zal in de kolom Status van de pserver-repository deze wijzigen van Niet aangemeld naar Aangemeld.

- Druk op OK om uw wijzigingen toe te passen of voeg een andere locatie toe aan de lijst. &cervisia; zal zoveel locaties als u wilt opslaan.

### Importeren van een module in de repository

In deze sectie bespreken we hoe u een nieuw project in de &CVS;-repository kunt aanmaken. Wanneer u alleen maar wilt werken met een bestaand project in de repository dan kunt u deze sectie overslaan.

Er zijn twee manieren om een project in de &CVS; te stoppen:

- Importeer de bestanden en mappen naar een nieuwe module, met behulp van de importeerdialoog van &cervisia;. Modules zijn de hoogste mappen in de boomstructuur van de &CVS; repository en worden gebruikt om de verschillende software projecten in de repository apart te houden en te organiseren.

- Maak een lege module aan en voeg de nieuwe bestanden en mappen handmatig toe. U zult meer controle hebben, maar het zal waarschijnlijk een beetje meer tijd kosten.

Houdt in gedachten dat &CVS; oorspronkelijk is ontworpen om tekstbestanden te behandelen. Veel functies, zoals revisie samenvoegen, verschillen maken in een leesbare vorm, &etc; worden alleen toegepast op tekstbestanden. Dit betekent niet dat u de &CVS; niet kan gebruiken voor binaire bestanden, het betekent dat u de &CVS; expliciet moet vertellen of het een tekst- of binair bestand is. Als u het verkeerde type bestand aangeeft, dan zult u problemen ervaren met de functionaliteit van &CVS; voor deze bestanden en kunnen ze verminkt raken.

Een project importeren (als een nieuwe module) heeft enige voordelen: u kunt alle bestanden en mappen recursief importeren en de module zal automatisch voor u worden aangemaakt. Dit maakt het importeren van grote bestaande projecten naar de repository gemakkelijker. Er zijn echter ook enkele nedelen: u kunt geen gebruik maken van de importdialoog van &cervisia; om bestanden aan bestaande modules toe te voegen en u kunt de bestanden ofwel als tekst of als binaire bestanden importeren. U kunt om de beperkingen heen werken door een map met bestanden van alleen één van deze types aan te maken of door de patronen van de bestanden die genegeerd moeten worden bij het importeren te specificeren.

Veronderstel bijvoorbeeld dat uw project alleen tekstbestanden en enige PNG-afbeeldingen (binaire bestanden) bevat. U kunt &CVS; vertellen om alle bestanden met het patroon `*.png` te negeren bij bij het importeren van de andere bestanden als tekst of u kunt de afbeeldingen naar een aparte map verplaatsen en dan de overige bestanden (als tekstbestanden) importeren. Op beide manieren moet u een checkout op de nieuw geïmporteerde module doen naar een nieuwe werkkopie, de ontbrekende bestanden en mappen er naar toe kopiëren, toevoegen en ze vastleggen (commit) in de repository om het proces van importeren te voltooien.

Als een alternatief kunt u de bestanden en mappen handmatig toevoegen, daarmee een lege module voor ze aan te maken. Om een lege module aan een repository toe te voegen, maakt u een nieuwe map aan in de basismap van de &CVS; repository. De naam van deze nieuwe map is de naam van de module. Checkout de nieuwe lege module. Kopieer daarna de bestanden en mappen naar de werkkopie, voeg toe en leg vast (commit) om ze te uploaden naar de &CVS; repository.

Een schermafdruk van &cervisia;'s import venster

Een schermafdruk van &cervisia;'s import venster

In kunt u de dialoog zien die u helpt om een project als een module te importeren. Om toegang te krijgen tot de importdialoog van &cervisia;, kiest u het menu-item Repository Importeren....

Repository:

  Voer de naam van de &CVS;-repository in of selecteer deze uit het afrolvak. De naam wordt ook wel $`CVSROOT` genoemd. U moet er schrijftoegang hebben en de repository dient geïnitialiseerd te zijn. Wanneer de repository nog niet bestaat, maak deze dan aan met het kiezen van het menu-item Repository Aanmaken... .

  Het afrolvak toont een lijst met repositories die u eerder hebt ingevoerd met het dialoogvak Toegang tot repositories instellen. Indien de repository zich bevindt op een server, zorg er dan voor dat de authenticatie werkt, bekijk hiervoor de sectie .

Module:

  De naam van de module waaronder het project bewaard zal worden. Na het importeren, kan het project uitgecheckt worden onder deze naam. Zie de sectie voor meer informatie. Dit is tevens de naam van de corresponderende map in de repository.

Werkmap:

  Dit is de hoofdmap van het project dat u wilt importeren. Het importeren start vanuit deze hoofdmap. Alle onderliggende mappen worden ook geïmporteerd.

Distributeurtag:

  De vendor tag is van oorsprong bedoeld om bronbestanden van derde partijen of fabrikanten op te zoeken. Wanneer u geen idee hebt wat u ermee aan moet kunt u gewoon uw gebruikersnaam invullen. Het maakt niet zoveel uit wat u hier invult.

Uitgave-tag:

  Deze tag wordt van oorsprong gebruikt voor het importeren van verschillende versies van software van derde partijen. Wanneer dit niet van toepassing is,gebruik dan het woord `start` of `FOO_1_0`, `FOO` is de naam van uw project en `1.0` is het versienummer van de geimporteerde uitgave.

Bestanden negeren:

  Indien u dit veld invult, dan zal een extra optie `-I bestandsnamen` worden meegegeven aan het commando `cvs import`. Deze, met een spatie gescheiden bestanden (jokertekens zijn hierin toegestaan), worden niet meegenomen tijdens het importeren. In het algemeen is het handiger om een aparte map te maken met alle bestanden die u wilt importeren. Dit voorkomt ook fouten. Andersom kan dit veld wel handig zijn om bestanden te importeren die normaalgesproken door &CVS; genegeerd worden, zoals ⪚ bestanden met de naam `core`. In dit soort gevallen, kunt u in de lijst de bestandsnaam invullen, voorafgegaan door een `!`. Dit zorgt er dan voor dat dit bestand juist wel wordt meegenomen. Een lijst met bestandsnamen die normaalgesproken niet worden meegenomen is te vinden in het gedeelte .

Commentaar:

  Gebruik dit veld om het commentaar dat u zou willen opslaan over de oorsprong, gebruik, ontwikkeling, &etc; van de bestanden die u aan het importeren bent.

Als binairies importeren

  Indien u deze optie activeert, zullen alle bestanden geimporteerd worden in de binaire modus. Dit houdt in dat de parameter `-kb` wordt meegegeven aan het commando `cvs import`.

Het modificatietijdstip van het bestand als tijdstip van importeren gebruiken

  Als u dit vakje activeert zal het tijdstip van importeren worden gebruikt als het modificatietijdstip van het bestand.

Nadat u dit formulier hebt ingevuld en bevestigd door OK in te drukken, zal het volgende &CVS;-commando worden gebruikt:

    cvs -d repository import -m "" module leverancierstag vrijgavetag

### Een module uitchecken van de repository

Nu u met succes uw repository-locatie hebt gedefinieerd en de initiële bestanden hebt geïmporteerd naar de repository, is het tijd om de module uit de &CVS; repositoryop te halen en uw eigen werkkopie te maken.

U zult ook de naam van de branch of tag die u wilt gebruiken moeten weten.

Branches van een module zijn parallelle versies van deze module. Een goed voorbeeld uit het echte leven hiervan is de vrijgave van een softwareproject. Na een hoofdvrijgave zijn er bugs in de code die gerepareerd moeten worden, er zijn echter ook mensen die nieuwe functies aan de toepassing willen toevoegen. Het is erg moeilijk om beiden tegelijk te doen omdat nieuwe functies gewoonlijk ook nieuwe bugs introduceren, waardoor het moeilijk is om de ouden te volgen. Om dit dilemma op te lossen, laat &CVS; u een parallelle versie aanmaken, die we de "stabiele uitgave branch" noemen waaraan u alleen bugreparaties kunt toevoegen, waarbij de hoofdbranch (HEAD) open is voor het toevoegen van nieuwe functies.

Tags worden gebruikt om een versie van een project te markeren. &CVS; stempelt één versie van elke bestand met de tag, dus wanneer u een checkout doet of bijwerkt naar een specifieke tag, dan krijgt u altijd dezelfde versies van de bestanden. Daarom zijn, in tegenstelling tot branches, tags niet dynamisch: u kunt niet op een tag ontwikkelen. Tags zijn bruikbaar om uitgaven te markeren, grote wijzigingen in de code, &etc; Met tags kunt u gemakkelijk terugkeren naar het project in een voorgaande status, om bugs te reproduceren en te volgen, opnieuw de vrijgegeven code te genereren, &etc;

Een schermafdruk van het venster dat verschijnt bij het uitchecken

Een schermafdruk van het venster dat verschijnt bij het uitchecken

Repository:

  De naam van de &CVS;-repository, ook wel bekend als ``$CVSROOT``. Het afrolvak toont de lijst met repositories, die u eerder hebt ingevoerd met het dialoogvak Toegang tot repositories instellen. Als de repository zich bevindt op een server, zorg er dan voor dat de authenticatie werkt, bekijk hiervoor de sectie .

Module:

  De naam van de module om uit te checken. Als u werkt met een bestaande repository, dan kunt u deze naam waarschijnlijk van de systeembeheerder krijgen; of, als het een open source repository is, dan kunt u de naam van de module krijgen uit de webpagina's van het project. Als u een nieuwe module vanuit het niets wilt aanmaken, maak dan gewoon een nieuwe map aan in de lokale basismap van de repository. De naam van de map zal hetzelfde zijn als de naam van de lege module.

  Anders, als de repository een bestand ``$CVSROOT`/modules` heeft, kunt u een lijst van beschikbare modules verkrijgen door op de knop Lijst ophalen te klikken.

  Merk op dat het mogelijk is om elke bestaande subfolder van de module uit te checken, zonder de rest van de module op te halen. Voer gewoon ook het pad naar de subfolder in. Als u bijvoorbeeld alleen de `doc/cervisia` subfolder van de kdesdk module wilt hebben, voer dan `kdesdk/doc/cervisia` in dit veld in.

Branch-tag:

  De naam van de branch of tag die u uit wilt checken. Als u dit veld leeg laat zal &cervisia; de hoofd (HEAD) tak ophalen.

Werkmap:

  De map waaronder de module moet worden uitgecheckt. Merk op dat de topniveaumap van de werkkopie genoemd is naar de module die u wilt ophalen, tenzij u een alternatieve naam in het veld Uitchecken als:.

Uitchecken als:

  Dit resulteert er in dat de bestanden in de werkkopie worden uitgecheckt naar een alternatieve map onder de werkmap in plaats van een map vernoemd naar de module.

Alleen exporteren

  Als u dit vakje activeert zullen de bestanden worden geëxporteerd in plaats van uitgecheckt. Exporteren maakt een kopie van de broncode voor de module zonder de administratieve mappen van de &CVS;. Exporteren kan worden gebruikt om de broncode klaar te maken voor een uitgave.

Recursief uitchecken

  Alle bestanden en mappen recursief uitchecken.

### Het hoofdvenster, status van bestanden bekijken en bijwerken

Wanneer u &cervisia; start en een werkkopie opent door Bestand Sandbox openen... te kiezen, dan ziet u twee hoofdgebieden in het hoofdvenster van &cervisia;: de bovenste is een hiërarchisch (boomstructuur) beeld van de huidige werkkopie; het onderste gebied wordt gebruikt de &CVS; commando's, die door &cervisia; worden uitgevoerd om zijn taken te vervullen, evenals de uitvoer die gegenereerd wordt door deze commando's.

Standaard laat &cervisia; niet de bestanden in de submappen zien, zodat u op de mappen moet klikken als u ze wilt zien. Om alle bestanden in de werkkopie te zien, selecteert u Beeld Boomstructuur uitvouwen . Om alle mappen in de werkkopie weer te sluiten, kiest u Beeld Boomstructuur invouwen .

Conform de instellingen in de bestanden `.cvsignore`, zullen de bestanden die u meestal niet wilt toevoegen in de repository, zoals bijvoorbeeld object-bestanden, niet getoond worden. Voor ieder bestand kunt u de bijbehorende status zien. Standaard is dit "Onbekend" omdat &cervisia; het ophalen van gegevens pas doet wanneer u kiest voor Bestand Bijwerken of Bestand Status . Met deze werkwijze heeft u in ieder geval een minimale hoeveelheid aan functionaliteit tot uw beschikking, zelfs wanneer u niet de beschikking heeft over een permanente verbinding met de &CVS;-server.

Een schermafdruk van het hoofdscherm

Een schermafdruk van het hoofdscherm

De commando's in het menu Bestand zullen alleen maar uitgevoerd worden op de bestanden die gemarkeerd zijn. U kunt ook mappen markeren. Kies nu de optie Bestand Bijwerken of druk op F5. &cervisia; gebruikt het commando

    cvs update -n bestandsnamen

om status-informatie te krijgen over de gemarkeerde bestanden. Bedenk dat &cervisia; alleen maar recursief door de submappen zal controleren wanneer u de betreffende optie in het menu Instellingen activeert. U kunt de status van de bestanden uitlezen in de kolom Status:

Lokaal gewijzigd

  Dit betekent dat het bestand gewijzigd is ten opzichte van de versie in de repository.

Lokaal toegevoegd

  Dit betekent dat het bestand niet bestaat in de repository, maar wel in de werkmap staat. Het staat dus op de planning om aan de repository toegevoegd te worden. Het werkelijk toevoegen aan de repository gebeurt bij het vastleggen. Dit wordt "commit" genoemd.

Lokaal verwijderd

  Dit betekent dat het bestand staat gepland om verwijderd te worden, maar dat het nu nog bestaat in de repository. Het werkelijk verwijderen gebeurt alleen na een commit.

Bijwerken noodzakelijk

  Dit wordt getoond wanneer er een nieuwere versie van het bestand bestaat in de repository, ⪚ wanneer iemand anders een aanpassing heeft gecommit. Normaal gesproken wilt u dit bestand bijwerken in uw lokale repository zodat u een versie in uw lokale map hebt staan die recent is.

Patch noodzakelijk

  Dit is identiek aan hierboven. Het verschil is alleen dat als u gekozen heeft voor Bijwerken, de &CVS;-server alleen een patch naar u toe stuurt in plaats van het hele bestand.

Samenvoegen noodzakelijk

  Geeft aan dat samenvoegen (merge) van de revisie van het bestand in uw werkmap met de versie in de repository nodig is. Dit gebeurt wanneer u aanpassingen aan het bestand hebt gemaakt terwijl iemand anders ook zijn/haar aanpassingen heeft vastgelegd (commit) in de repository. Wanneer u kiest voor bijwerken worden de gemaakte aanpassingen in de repository samengevoegd met uw bestand. Wanneer er een conflict plaatsvindt (bijvoorbeeld wanneer iemand dezelfde regels als u hebt veranderd) dan zal de kolom status "Conflict" aangeven.

Actueel

  Geeft aan dat het bestand identiek is met die in de repository.

Conflict

  Dit wordt getoond wanneer het bestand nog conflictmarkeringen bevat. Misschien heeft u reeds het bestand bijgewerkt en niet de conflicten opgelost.

Niet in CVS

  Geeft aan dat een bestand niet geregistreerd is in de &CVS;-repository. Wanneer u het bestand beschikbaar wilt stellen aan anderen zult u het moeten toevoegen aan de repository. Wanneer dat niet de bedoeling is dan kunt u overwegen om het toe te voegen aan het bestand `.cvsignore`.

Nu dat we een overzicht hebben van de huidige status van het &CVS; zou u een update kunnen uitvoeren. Markeer enkele bestanden (of de hoofdmap van een mappenstructuur, waarmee u gelijk alle bestanden in de hoofdmap selecteert). Kies nu de optie Bestand Bijwerken . (Uiteraard had u daar ook mee kunnen beginnen in deze sessie). Voor enkele van de bestanden kan de status daarmee veranderen. Met name de bestanden die waren gemarkeerd als "Patch benodigd" of "Bijwerken noodzakelijk". De kolom Status kan nu ook het volgende bevatten:

Bijgewerkt

  Wordt getoond wanneer het bestand is bijgewerkt vanuit de repository.

Gepatched

  Geeft aan dat de &CVS;-server een patch heeft verzonden voor dit bestand en dat deze succesvol is aangebracht. Wanneer de patch niet succesvol was omdat er een conflict is ontstaan tussen uw aanpassingen en de aanpassingen van iemand anders die reeds zijn vastgelegd (commit) in de repository zal de status van het bestand veranderen in Conflict.

U zult waarschijnlijk al gezien hebben dat sommige rijen een andere kleur hebben nagelang de status van het bestand. Bijvoorbeeld: een bestand met een conflict wordt met rood gemarkeerd om aan te geven dat er een conflict is dat eerst opgelost moet worden voordat u verder kunt gaan werken aan het bestand. Wanneer de map een hoop bestanden heeft kunt u daarmee wel eens het overzicht verliezen. Klik in zo'n situatie op het kolomhoofd van de kolom Status. De lijst met bestanden wordt dan gesorteerd op de prioriteit van de status, waardoor de meest belangrijke informatie bovenaan staat. Om weer terug te keren naar de weergave waarbij de bestanden alfabetisch gesorteerd zijn, klik op de koptekst van de kolom Bestandsnaam.

## Werken met bestanden

Alle gangbare functionaliteit die in &CVS; zit is direct beschikbaar in &cervisia;. Commando's worden meestal uitgevoerd op enkele bestanden tegelijkertijd, namelijk alle bestanden die op dat moment zijn geselecteerd. Wanneer er ook submappen zijn geselecteerd, hangt het af van de gemaakte instellingen in het menu instellingen. Bijvoorbeeld wanneer bij Instellingen Recursief vastleggen (commit) & verwijderen is geactiveerd en u kiest de optie Bestand Vastleggen (commit)... terwijl een map is geselecteerd, dan zullen alle bestanden in de boomstructuur onder deze map worden vastgelegd. Anders worden alleen de gewonde bestanden in de map zelf vastgelegd.

Een schermafdruk van het contextmenu van &cervisia;

De meest gebruikte acties zijn ook beschikbaar door rechts te klikken op de bestanden in de boomstructuur via het contextmenu. toont het contextmenu van het hoofdvenster van &cervisia;.

U kunt eenvoudig een bestand bewerken door er dubbel op te klikken of het te selecteren en op &Enter; te drukken. Dit start de standaard toepassing die dat type bestand behandeld (de standaard toepassing voor elk bestandstype is een &kde; brede instelling). Als de standaard toepassing niet die is die u wilt gebruiken, dan kunt u rechts klikken op het bestand en het submenu Bewerken met kiezen en een van de andere toepassingen kiezen die dat bestandstype behandeld.

### Bestanden toevoegen

Bestanden aan de repository toevoegen vereist twee stappen: ten eerste moeten deze in de &CVS; worden geregistreerd, met andere woorden toegevoegd aan de repository. Dit is nodig, maar niet genoeg. Om ze daadwerkelijk in de repository te stoppen moet u deze gaan vastleggen ( commit). Deze werkwijze heeft een belangrijk voordeel: u kunt bestanden vastleggen samen met de aanpassingen op andere delen van het project. Wanneer u dit doet dan kunt u gemakkelijk zien (bijvoorbeeld in de commit-e-mailberichten) dat al deze veranderingen onderdeel zijn van een groter geheel.

Om dit te voltooien, markeert u alle toe te voegen bestanden in het hoofdvenster van &cervisia;. Daarna kiest u Bestand Aab repository toevoegen... of u klikt rechts op de gemarkeerde bestanden en kiest Aan repository toevoegen.... De dialoog Aan CVS toevoegen zal verschijnen, met de lijst gemarkeerde bestanden en om bevestiging vragen. Druk op de knop OK.

&cervisia; start een commando

    cvs add bestandsnamen

uit. Wanneer de opdracht succesvol was zal de kolom Status "Lokaal toegevoegd" weergeven.

&CVS; is niet gemaakt een zinvolle revisiecontrole uit te voeren op binaire bestanden. Bijvoorbeeld het samenvoegen (merging) van binaire bestanden heeft geen zin. Verder heeft &CVS; standaard "keyword expansion" (bijvoorbeeld op de string `$Revision: 1.78.2.4 $`) wanneer een bestand wordt vastgelegd. In binaire bestanden kunnen zulke vervangingen het bestand beschadigen en volledig onbruikbaar maken.

Om dit gedrag tegen te gaan kan men het beste binaire bestanden (of andere bestandstypen zoals Postscript of PNG-bestanden) vastleggen door te kiezen Bestand Binair bestand vastleggen.... De dialoogAan CVS toevoegen zal verschijnen, met de lijst met door u gemarkeerde binaire bestanden en om bevestiging vragen. Druk op de knop OK.

&cervisia; start een commando

    cvs add -kb bestandsnamen

### Bestanden verwijderen

Net als het toevoegen van bestanden wordt het verwijderen van bestanden in twee stappen gedaan: Allereerst moeten de bestanden gemarkeerd worden voor verwijdering door te kiezen voor Bestand Uit de repository verwijderen of rechts klikken op de gemarkeerde bestanden en Uit de repository verwijderen... uit het contextmenu. De dialoog Uit CVS verwijderen zal verschijnen met de lijst door u gemarkeerde bestanden en om bevestiging vragen. Druk op de knop OK. &cervisia; zal het commando

    cvs remove -f bestandsnamen

uitvoeren. Daarna zal de aanpassing op de sandbox vastgelegd (commit) moeten worden samen met eventuele andere aanpassingen binnen het project.

Het bovenstaande commando werkt alleen wanneer het bestand goed is bijgewerkt. Anders zult u een foutmelding krijgen. Dit is vrij zinnig wanneer u bedenkt dat wanneer u het bestand heeft gewijzigd ten opzichte van de versie in de repository en iemand anders heeft aanpassingen gemaakt u eerst dient te controleren of u deze veranderen wilt negeren.

### Toevoegen en verwijderen van mappen

Mappen worden totaal anders door &CVS; afgehandeld dan normale bestanden.Ze vallen namelijk niet onder de revisie-controle, wat bijvoorbeeld wil zeggen dat men niet kan nagaan welke mappen ooit hebben bestaan binnen een project op een bepaald moment. Daarnaast kunnen mappen niet expliciet verwijderd worden (tenzij men ze direct in de repository weggooit).

In plaats daarvan heeft &CVS; de stelregel dat een map "niet bestaat", wanneer de map leeg is. Deze regel kan afgedwongen worden door de parameter `-P` toe te voegen aan het commando `cvs update` and `cvs checkout`. Deze parameter kan ingesteld worden in het menu Instellingen Lege mappen verwijderen bij bijwerken.

Een map kan aan de repository worden toegevoegd met het menu-item Bestand Aan repository toevoegen of door rechts te klikken op de gemarkeerde map en uit het contextmenu Aan repository toevoegen.... Merk op dat in tegenstelling tot het toevoegen van bestanden, men na afloop niets hoeft vast te leggen (commit). &cervisia; geeft het commando

    cvs add mapnaam

### Bestanden vastleggen (commit)

Wanneer u een bepaalde hoeveelheid veranderingen in de werkkopie hebt gemaakt en u wil de andere ontwikkelaars hier deelgenoot van maken dan zul u ze moeten vastleggen. De engelstalige term hiervoor is commit. Door het vastleggen wordt uw versies als nieuwe revisies aan de repository toegevoegd. Een ontwikkelaar die vervolgens een update uitvoert zal daarin uw aanpassingen terugvinden.

Om een aantal bestanden tegelijk vast te leggen, selecteert u ze in &cervisia; en kiest u voor Bestand Vastleggen (commit)... of u klikt rechts op de gemarkeerde bestanden en kiest in het contextmenu Vastleggen (commit)....

Een schermafdruk van het dialoogvenster "CVS commit" van Cervisia

U krijgt een dialoog die u een lijst met de geselecteerde bestanden boven aan de sectie laat zien en een logbericht voor uw onderstaande wijzigingen. &cervisia; helpt u op een aantal manieren om een betekenisvol logbericht te vinden: allereerst in de lijst van bestanden kunt u dubbelklikken op een bestand of de toets Return drukken om de gemaakte veranderingen aan het bestand te zien. Ten tweede geeft het een lijst van logberichten die je eerder hebt gebruikt in een comboveld. Ten derde is dit venster geïntegreerd met de changelog-editor van &cervisia; zoals hieronder beschreven. Als u de dialoog hebt beëindigd, zal het commando

    cvs commit -m bericht besandsnamen

worden gebruikt.

Een veelvoorkomende fout die u tegen kunt komen wanneer u bestanden vastlegt is Up-to-date check failed. Dit geeft aan dat iemand veranderingen in de repository heeft gemaakt sinds de laatste keer dat de lokale repository is bijgewerkt. Of technisch gesproken: dat de `BASE`-revisie niet de nieuwste binnen zijn branch is. In zo'n geval weigert CVS om uw aanpassingen toe te voegen aan de repository. De oplossing is om de lokale repository bij te werken, conflicten op te lossen en vervolgens in de repository vast te leggen. Wanneer u werkt aan een softwareproject is het een goede gewoonte om te controleren of het programma nog goed werkt nadat u de repository hebt bijgewerkt. Het kan namelijk zo zijn dat de door u gemaakte aanpassingen en andermans aanpassingen nadelig hebben gewerkt op de programmacode waardoor het programma niet meer werkt.

Een andere veelvoorkomende fout is de foutmelding Sticky tag 'X' for file 'X' is not a branch. Dit gebeurt wanneer u probeert een bestand vast te leggen die u eerder naar een bepaalde revisie of tag heb gebracht met het commando:

    %cvs update -r X

(wat ⪚ het geval is als u kiest voor Geavanceerd Bijwerken naar tag/datum...). In zo'n geval zal de tag op het bestand "sticky" worden, wat wil zeggen dat verdere updates niet de nieuwste revisie aan die branch toevoegt. Wanneer u verdere revisies wilt vastleggen binnen de branch zult u de branch-tag moeten bijwerken voordat u weer een commit kunt uitvoeren.

Met &cervisia; is het vrij gemakkelijk om een ChangeLog-bestand te onderhouden dat voldoet aan het formaat zoals is omschreven in de standaarden voor GNU-programmeren (GNU coding guidelines). Om deze te gebruiken kiest u voor Bestand ChangeLog-ingang invoegen.... Wanneer een bestand met de naam `ChangeLog` bestaat in de hoofdmap van de sandbox, zal dit bestand worden geladen. Vervolgens heeft u de mogelijkheid om deze te bewerken. Aan de bovenzijde van dit bestand wordt een regel met de huidige datum en uw gebruikersnaam (wat kan worden ingesteld zoals staat beschreven in de sectie ) aangemaakt. Wanneer u klaar bent met het invullen van het venster klikt u op de knop OK. De volgende keer dat het venster "CVS commit" wordt aangeroepen zult u zien dat u het laatste ChangeLog-bericht is toegevoegd aan de ChangeLog.

### Conflicten oplossen

Conflicten kunnen zich voordoen wanneer u veranderingen maakt aan een bestand dat gelijktijdig ook door een andere ontwikkelaar wordt aangepast. Het conflict wordt opgemerkt door &CVS; wanneer u het aangepaste bestand wilt bijwerken in de repository. &CVS; probeert de veranderingen samen te voegen (merge) met uw lokale werkkopie. Dit samenvoegen zal niet lukken wanneer de veranderingen aan het bestand elkaar overlappen (dwz dat de aangepaste regels in het bestand van de ene ontwikkelaar samenvalt met de aangepaste regels van die van uzelf). De &CVS;-server zal een foutmelding geven.

In het hoofdvenster van &cervisia; worden bestanden welke een conflict hebben, weergeven in de kolom Status met "Conflict" en rood gekleurd. Het is nu uw taak om deze conflicten op te lossen alvorens het bestand vast te leggen. &CVS; zal weigeren om elk bestand met conflicten vast te leggen totdat ze zijn bewerkt. Vanuit het hoofdvenster kunt u uiteraard conflicten op de traditionele manier oplossen: gewoon op het betreffende bestand dubbelklikken en aanpassen met uw favoriete editor.

&CVS; markeert de conflicterende wijzigingen door markeringen te plaatsen midden in de bestanden, op de volgende manier:

    <<<<<<<
    Wijzigingen in uw werkkopie
    =======
    Wijzigingen in de repository
    >>>>>>> revisie_nummer

U zult dit gehele blok met de nieuwe samengevoegde versie moeten vervangen. Natuurlijk heeft u een grote mate van vrijheid wanneer u een set conflicten dient op te lossen: voor elk conflict kunt u besluiten om te kiezen uit twee alternatieve versies. U kunt ook besluiten dat dat geen goed resultaat zal opleveren en vervolgens beide aanpassingen herschrijven tot een nieuwe routine of zelfs een compleet nieuw bestand.

Gelukkig biedt &cervisia; een mooier interface voor het behandelen van deze conflicten. Dit betekent niet dat het nooit nodig is om handmatig de bestanden te bewerken, maar minstens de noodzaak om triviale conflicten op te lossen is verdwenen. Om de dialoog van &cervisia; voor CVS oplossen te gebruiken, kiest u Bestand Oplossen... of klikt u rechts op het gemarkeerde bestand en kiest oplossen... uit het contextmenu.

Een schermafdruk van het oplossenvenster

Een schermafdruk van het oplossenvenster

Bovenaan de dialoog ziet u Uw eigen versie (A) van het bestand aan de linkerzijde en de versie in de repository, Andere versie (B), aan de rechterzijde. De verschillen worden gemarkeerd met een rode kleur. Onder deze twee versies kunt u de Samengevoegde versie zien. Deze wordt bewaard in uw werkkopie als u op de knop Opslaan klikt.

U kunt verder of terug gaan naar de verschillende secties door de knoppen << en >> te gebruiken. In het lage midden van het venster kunt u zien welke sectie op dat moment is gemarkeerd. Bijvoorbeeld `2 van 3` betekent dat u momenteel op de tweede conflicterende sectie bent van drie conflicterende secties in totaal.

Nu kunt u sectie voor sectie bepalen welke versie u wilt hebben in het samengevoegde bestand. Door op A te drukken, neemt u de versie over die u maakte. Door op B te drukken, neemt u de versie over uit de repository. Door op A+B te drukken, worden beide versies toegevoegd en uw versie wordt eerste. B+A heeft hetzelfde resultaat, maar de volgorde is verschillend: eerst de versie uit de repository en daarna die van u.

Als u niet tevreden bent met elk van deze versies, druk dan op Bewerken om een eenvoudige tekstbewerker te starten waarmee u de sectie kunt bewerken. Wanneer u klaar bent, drukt u op OK om terug te keren naar de dialoog CVS oplossen en verder gaan met het oplossen van conflicten. U zult de sectie, die u zojuist hebt bewerkt, in de Samengevoegde versie zien, met uw wijzigingen.

Om uw wijzigingen op te slaan, waarmee de versie van de werkkopie wordt overschreven, druk dan op Opslaan. Merk op dat hiermee niet alleen de sectie die u aan het bekijken was, wordt opgeslagen, maar alle secties in het bestand. Als u het in een ander bestand wilt opslaan, druk dan op Opslaan als.... Druk op Sluiten om de dialoog te verlaten. Als u de dialoog sluit zonder opslaan, dan zullen de gemaakte wijzigingen verloren gaan.

## Informatie verkrijgen over bestanden en patches aanmaken

### Verschillen bekijken tussen revisies

Er zijn enkele plekken binnen Cervisia waar u een dialoogvenster kunt opvragen waarin u de verschillen tussen de revisies van een bestand kunt zien:

- In het hoofdvenster kunt u kiezen voor Beeld Verschil met de repository (BASE).... Dit is gebaseerd op het commando `cvs diff` en toont u de verschillen tussen de versie in uw sandbox en de versie die u het laatst heeft opgehaald via bijwerken. Deze versie is ook wel bekend als `BASE`. Dit is vooral nuttig net voordat u een bestand wilt vastleggen (commit), zodat u een toepasselijk logbericht kunt maken.

- U kunt de verschillen tussen de versie in uw sandbox en de versie in de hoofd ontwikkeltak (ook genaamd `HEAD`) zien door Beeld Verschil met de repository (HEAD)... te kiezen.

- U kunt de verschillen tussen de laatste twee revisies van het geselecteerde bestand zien door Beeld Laatste wijziging... te kiezen.

- U kunt toegang krijgen tot de menu-items Verschil met de repository (BASE)..., Verschil met de repository (HEAD)... en Laatste wijziging... vanuit het contextmenu van het hoofdvenster, door rechts te klikken op het bestand dat u wilt bekijken.

- In het venster dat getoond wordt wanneer bestanden worden vastgelegd kunt u een venster met verschillen oproepen door het selecteren van een bestandsnaam in de selectielijst, ofwel door dubbelklikken of door de toets Enter te gebruiken. Hetzelfde kan ook bereikt worden via Beeld Verschil met de repository (BASE)... met het juiste bestand geselecteerd in het hoofdvenster.

- In het dialoogvenster CVS-log kunt u twee revisies markeren van een bestand en een venster laten tonen waarbij men de verschillen tussen deze twee revisies kan zien (zie de sectie ).

Zoals u al zou verwachten zal &cervisia; niet zomaar een dump maken naar een terminal van de output van het `diff`-commando, maar zal het een grafische weergave laten zien zoals te zien is in .

Een schermafdruk van het diff-venster

Een schermafdruk van het diff-venster

De tekst in het dialoogvenster is een verbeterde variant van de tekst die wordt gegeven door het commando diff met de optie `-u`. U kunt de verschillende versies in de twee vensters zien, waarbij de regels dusdanig geplaatst dat u makkelijk een vergelijking kunt maken. Dat betekent dat waar tekst is toegevoegd of verwijderd, het venster lege lijnen toont met de markering `+++++` aan de linkerzijde. Ergens anders kunt u het _running_ nummer zien van iedere regel in de linkerkolom.

In de tweede kolom in het rechtervenster , kunt u zien wat voor type verandering is gemaakt. Mogelijke veranderingen zijn `Invoegen`, `Verwijderen` en `Wijzigen`. De lijnen zijn daarbij respectievelijk blauw, groen en rood gemarkeerd. In het midden van het venster ziet u een gecomprimeerde afbeelding van de gebruikte kleurmarkeringen in het bestand. Op deze wijze heeft u een snel overzicht van de veranderingen die op het bestand zijn uitgevoerd. U kunt de positie van de gekleurde regionen van de gecomprimeerde afbeelding gebruiken als orientatie wanneer u de scrollbalken gebruikt.

Normaliter worden de schuifbalken links en rechts gesynchroniseerd, wat wil zeggen dat wanneer je links scrollt de rechterzijde van het venster ook meescrollt. Deze optie kunt u uitzetten met de instelling Schuifbalken synchroniseren.

Voor meer informatie hoe u het dialoogvenster CVS-diff kunt aanpassen , zie de sectie .

### Patches aanmaken

Soms wilt u uw wijzigingen aanbieden om te worden nagekeken, alvorens ze vast te leggen of u hebt geen schrijftoegang tot de repository (daarom kunt u niet vastleggen). &CVS; biedt standaard formaten om de wijzigingen in uw werkkopie te delen, zodat anderen uw wijzigingen kunnen nakijken, testen in hun werkkopie en aanbrengen in de &CVS; repository. Een bestand met deze verschillen wordt a patch genoemd en wordt gegenereerd door het commando `cvs diff`, dezelfde manier als de verschillen in . Delen van patches in plaats van bestanden vereist minder bandbreedte en patches zijn gemakkelijker te behandelen, omdat u één patch-bestand kunt verzenden met alle verschillen van vele bronbestanden.

In &cervisia; wordt dit bereikt door het kiezen van Geavanceerd Patch aanmaken tegen repository...

De actie Patch tegen de repository aanmaken... maakt een patch met alle wijzigingen in alle bestanden in uw werkkopie (sandbox) tegen de `BASE`-repository. De selectie van bestanden in het hoofdvenster heeft geen invloed op de patch die zal worden gegenereerd.

Een andere mogelijkheid is om één bestand in het hoofdvenster te selecteren en Logbestand doorbladeren... uit het menu Beeld of klik rechts op het gemarkeerde bestand en kies Logbestand doorbladeren... uit het contextmenu, om de Dialoog CVS-log te openen. Selecteer nu de versie waartegen u een patch wilt aanmaken, als revisie "A" en druk op de knop Patch aanmaken.... Dit genereert een patch met de verschillen tussen het gemarkeerde bestand in uw werkkopie en de versie geselecteerd als revisie "A".

Alvorens de patch te maken toont &cervisia; een dialoog waarmee u het uitvoerformaat kunt instellen.

Een schermafdruk van &cervisia;'s patchdialoog

Een schermafdruk van &cervisia;'s patchdialoog

Uitvoerformaat

  Er zijn hier drie formaten beschikbaar:

  Normaal: een formaat dat kan worden gebruikt om met de ed-editor automatisch met een kopie van het oude bestand het nieuwe bestand te maken. In het normale uitvoerformaat, markeren de tekens < en > de wijzigingen en is er geen contextinformatie.

  Geünificeerd: het meest gebruikte formaat voor het uitwisselen van patches. Het geünificeerde formaat gebruikt context-regels naast regelnummers om de verschillen op te slaan. Dit maakt het proces van het toepassen van patches meer robuust. Dit formaat toont de verschillen in een compacte en leesbare vorm, met een kop voor elk betrokken bestand en gescheiden secties voor elk verschil. De context-regels voor elk verschil maakt het lezen van de wijzigingen gemakkelijker. In het geünificeerde uitvoerformaat markeren de tekens + en - de wijzigingen.

  Context presenteert dezelfde informatie als het geünificeerde formaat, maar op een minder compacte manier. In het uitvoerformaat markeert het teken ! de wijzigingen.

Aantal contextregels:

  Stel hier het aantal context-regels in voor het geünificeerde of context-uitvoer-formaten. Deze optie is niet beschikbaar voor het normale uitvoerformaat, omdat in dat formaat geen contextinformatie wordt opgeslagen. Meer contextinformatie maakt het lezen van de ruwe uitvoer gemakkelijker en toepassen van de patch meer precies, maar vergroot de afmeting van de patch. Het is aanbevolen om minstens twee context-regels te gebruiken voor de juiste bewerking met de patch.

Negeerinstellingen

  Controleer hier de wijzigingen die niet beschouwd moeten worden als verschillen bij het genereren van de patch.

Na het instellen van het uitvoerformaat genereert &cervisia; de patch en toont de dialoog Opslaan als. Voer in deze dialoog de naam en locatie van het patch-bestand in.

### De annotatie-weergave van een bestand bekijken

Met het commando `cvs annotate`, biedt &CVS; de mogelijkheid om bij iedere regel in het bestand te zien wie deze het meest recentelijk heeft aangepast. Deze weergave kan handig zijn om uit te zoeken wie een verandering veroorzaakt heeft of aan wie men iets dient te vragen over een verandering of een bug in de programma.

&cervisia; geeft u toegang tot deze mogelijkheid, maar het verrijkt ook nog eens de informatie op een interactieve wijze. U kunt een annotatie-weergave zien door te kiezen voor Beeld Annoteren.... Een andere mogelijkheid is om op de knop Annotatie in het venster CVS-log, waarin u kunt selecteren welke versie van het bestand u wilt weergeven. Bij kunt u een schermafdruk zien van de dialoog.

Een schermafdruk van &cervisia;'s annotatiedialoog

Een schermafdruk van &cervisia;'s annotatiedialoog

In annotatiedialoog, ziet u in een venster de laatste versie van het geselecteerde bestand (of de versie van revisie "A", als u de annotatiedialoog hebt gestart vanuit de dialoog CVS-log)). In de kolommen voorafgaand aan de tekst, kunt u wat informatie verkrijgen die gerelateerd zijn aan de laatste veranderingen van iedere regel. In de eerste kolom wordt het regelnummer getoond. In de tweede kolom ziet u de naam van de auteur van deze revisie en het revisienummer. In de derde kolom ziet u de actuele inhoud van deze regel.

Wat betekent dat wanneer u een bepaalde regel ziet die u vreemd voorkomt of denkt dat het een bug betreft, kunt u gelijk zien wie verantwoordelijk is geweest voor die regel. Maar niet alleen dat, u kunt ook nagaan waarom de regel was gewijzigd. Om dit te zien zult u de muiscursor over het revisienummer moeten bewegen. Vervolgens zal er een tooltip verschijnen die het logbericht en de datum van de verandering zal tonen.

### &CVS; logs doorbladeren

Wanneer u een bestand in het hoofdvenster markeert en Logbestand doorbladeren... kiest uit het menu Beeld of rechts klikt op het gemarkeerde bestand en kies Logbestand doorbladeren... uit het contextmenu, dan zal de dialoog CVS log worden getoond (als u er meer dan één markeert, zal er niets gebeuren, omdat &cervisia; alleen de log voor één bestand tegelijk kan genereren en ontleden). Deze dialoog biedt functionaliteit die verder gaat dan het bekijken van de geschiedenis van het bestand. Als u het gebruikt als een bladerprogramma door versies, dan kunt u:

- Bekijk de revisie, auteur, datum, branch, commitbericht en tags voor elke versie van het gemarkeerde bestand.

- Bekijk een grafische representatie met boomstructuur waarin de branches en tags van het gemarkeerde bestand wordt getoond.

- Bekijk elke versie van het gemarkeerde bestand (met de standaard toepassing).

- De annotatie-weergave van elke versie van het gemarkeerde bestand bekijken

- Bekijk de verschillen tussen elk paar versies van het gemarkeerde bestand, inclusief paren met de huidige versie van de werkkopie van het gemarkeerde bestand.

- Maak patches aan die de verschillen bevatten tussen elk paar versies van het gemarkeerde bestand, inclusief paren met de huidige versie van de werkkopie van het gemarkeerde bestand.

Een schermafdruk van het logvenster

Een schermafdruk van het logvenster

U kunt kiezen of u de geschiedenis bekijkt, zoals geleverd door het commando `cvs log` (CVS uitvoer), in een Boomstructuur of in een Lijst. Wat u kiest is een kwestie van smaak en in welke informatie u geïnteresseerd bent. De boomstructuur is een intuïtieve representatie van wat er gebeurt binnen verschillende branches en door welke auteurs. U kunt de bijbehorende logberichten als tekstballon bekijken door er met uw muis boven te blijven hangen. De lijst is van nature lineair en daarom zal de weergave van branches niet direct duidelijk worden. Aan de andere kant toont het meer relevante informatie op een veel mindere schermgrootte. Voornamelijk de tijd van iedere wijziging op het bestand en het eerste deel van het logbericht. De &CVS; uitvoerinformatie is compleet, maar lang, en moeilijk te lezen. Om deze problemen te verlichten hebt u de mogelijkheid te zoeken in de tekst van de &CVS; uitvoer, door op de knop Zoeken... te drukken.

Om meer informatie te verkrijgen over een bepaalde revisie kunt u er op klikken ofwel in de lijst ofwel in de boomstructuur. De invulvelden in het midden van het dialoogvenster worden dan gevuld met informatie afkomstig uit het commando `cvs log`. U kunt twee revisies markeren, genaamd "A" en "B". Dit is van belang als u gebruik wilt maken van de mogelijkheden die worden aangeboden door de aanwezige knoppen. Revisie "A" kan gekozen worden met de linkermuisknop, revisie "B" kan gekozen worden met de middelste muisknop. In de lijstweergave kunt u ook navigeren met de cursor. Om revisies "A" en "B" te markeren kunt u respectievelijk de volgende sneltoetsen gebruiken &Ctrl;A, &Ctrl;B. Met het beeld CVS uitvoer kunt u klikken op Revisie A selecteren en Revisie B selecteren om de revisies te markeren.

Indien u op de knop Annotatie drukt, krijgt u een dialoog met de tekst van het bestand met de versiemarkering "A". Elke regel wordt voorafgegaan door informatie over wie voor het laatst die regel heeft aangepast, wanneer dat is gebeurd en in welk versienummer. U kunt meer informatie over het bekijken van geannoteerde versies in .

Wanneer u op de knop Diff drukt zal het commando `cvs diff` worden uitgevoerd. U krijgt een venster waarbinnen alle veranderingen tussen de twee gemarkeerde revisies getoond worden. Als u revisie "A", maar niet revisie "B" markeert, zal &cervisia; de wijzigingen tussen de gemarkeerde versie van het bestand als revisie "A" en de versie van de werkkopie van het bestand. Dit stelt u in staat om de verschillen tussen uw versie van het bestand en elke beschikbare versie in &CVS;. Om het makkelijk te maken om veranderingen te zien, worden verschillende kleuren gebruikt om regels te markeren die toegevoegd, verwijderd of simpelweg veranderd zijn. U kunt meer informatie over het bekijken van verschillen zien in .

Als u op de knop Patch aanmaken... drukt, krijgt u een dialoog waarin u de formaatopties instelt voor het genereren van een bestand met alle wijzigingen tussen de twee gemarkeerde revisies die worden getoond. Als u revisie "A" markeert, maar niet revisie "B", dan zal &cervisia; de wijzigingen genereren tussen de versie van het bestand gemarkeerd als revisie "A" en de versie van de werkkopie van het bestand. Dit stelt u in staat om een patch te genereren ofwel een verschilbestand, tussen uw versie van het bestand en elke beschikbare versie in &CVS;. Na het instellen van het formaat van de patch in de dialoog en op OK drukken, zal het commando `cvs diff` worden uitgevoerd mo het verschilbestand te genereren. Daarna verschijnt de dialoog Opslaan als. Voer de naam en locatie van het door &cervisia; gegenereerde patchbestand in, om het op te slaan. U kunt meer informatie over het aanmaken van patches en het patchformaat krijgen in .

Als u de knop Beeld indrukt, zal &cervisia; de revisie gemarkeerd als "A" ophalen en weergeven met de standaard toepassing voor dit type bestand.

Druk op de knop Sluiten om de dialoog te beëindigen en keer terug naar het hoofdvenster.

Om de log te genereren die de basis is voor de dialoog CVS Log, zal &cervisia; het volgende commando uitvoeren:

    cvs log bestandsnamen

### Door de geschiedenis bladeren

Wanneer de gebruikte repository logging heeft geactiveerd zal &cervisia; u de geschiedenis laten zien van bepaalde gebeurtenissen zoals checkout, commit, tags, updates en releases. Kies de optie Geschiedenis uit het menu Beeld waarna &cervisia; het volgende commando zal uitvoeren:

    cvs history -e -a

Dit haalt een compleet logbestand op van de server, &ie; een lijst van gebeurtenissen van alle gebruikers en alle modulen. Dit kan een grote hoeveelheid gegevens zijn.

Nu ziet u een lijst van gebeurtenissen gesorteerd op datum. In de tweede kolom wordt de soort gebeurtenis vermeld:

- Checkout - De gebruiker die wordt weergegeven in de kolom 'Auteur' heeft een module uitgecheckt

- Tag - Een gebruiker heeft het commando `cvs rtag` gebruikt. Merk op dat het gebruik van het commando `cvs tag` (te bereiken via het menu Geavanceerd Tag/Branch...) niet wordt vastgelegd in de geschiedenisdatabase. Dit heeft historische redenen (zie de &CVS;-FAQ).

- Uitgave - Een gebruiker heeft een nieuwe module uitgegeven. Eigenlijk wordt dit commando zelden gebruikt en heeft daarom niet zoveel waarde.

- Bijgewerkt, Verwijderd - Een gebruiker heeft het bestand bijgewerkt (update) dat verwijderd was in de repository. Als gevolg daarvan werd het bestand verwijderd uit zijn/haar werkkopie.

- Bijgewerkt, gekopieerd - een gebruiker heeft het bestand bijgewerkt (update), een nieuwere versie is gekopieerd naar de werkmap.

- Bijgewerkt, Samengevoegd - Een gebruiker heeft het bestand bijgewerkt. De aanpassingen van de versie die in de repository staat is samengevoegd met de versie in de eigen werkkopie.

- Bijgewerkt, Conflict - Een gebruiker heeft het bestand bijgewerkt waardoor een conflict werd bemerkt door zijn/haar eigen aanpassingen.

- Vastgelegd, Gewijzigd - Een gebruiker heeft een gewijzigd bestand vastgelegd.

- Vastgelegd, Toegevoegd - Een gebruiker heeft een bestand toegevoegd en deze vervolgens vastgelegd.

- Vastgelegd, Verwijderd - Een gebruiker heeft een bestand verwijderd en dit vervolgens vastgelegd.

Een schermafdruk van het geschiedenisvenster

Een schermafdruk van het geschiedenisvenster

U kunt deze lijst sorteren op andere criteria door te klikken op het betreffende kolomhoofd. Wanneer men gebeurtenissen wilt sorteren waarin men geinteresseerd is zijn er een aantal filteropties beschikbaar die men kan activeren door het aanvinken van keuzevelden:

- Vastleg-gebeurtenissen tonen

- Uitcheck-gebeurtenissen tonen

- Tag-gebeurtenissen tonen

- Overige gebeurtenissen tonen

- Alleen gebruiker

- Alleen bestandsnamen overeenkomstig met - filtert bestandsnamen met een reguliere expressie

- Alleen mappen overeenkomstig met - filtert mapnamen met een reguliere expressie

Speciale tekens die gebruikt kunnen worden binnen een reguliere expressie zijn:

- `x*` zal iedere instantie van het teken `x` matchen.

- `x+` zal één of meerdere instanties van het teken `x` matchen.

- `x?` zal nul of één instantie van het teken `x` matchen.

- `^` zal het begin met een string matchen.

- `$` zal het einde van een string matchen

- `[a-cx-z]` zal een set van tekens matchen, zoals in dit geval de set die bestaat uit a,b,c,x,y,z.

## Gevorderd gebruik

### Bijwerken tot tag, branch of datum

Branches van een module zijn parallelle versies van deze module. Een goed voorbeeld uit het echte leven hiervan is de vrijgave van een softwareproject. Na een hoofdvrijgave zijn er bugs in de code die gerepareerd moeten worden, er zijn echter ook mensen die nieuwe functies aan de toepassing willen toevoegen. Het is erg moeilijk om beiden tegelijk te doen omdat nieuwe functies gewoonlijk ook nieuwe bugs introduceren, waardoor het moeilijk is om de ouden te volgen. Om dit dilemma op te lossen, laat &CVS; u een parallelle versie aanmaken, die we de "stabiele uitgave branch" noemen waaraan u alleen bugreparaties kunt toevoegen, waarbij de hoofdbranch (HEAD) open is voor het toevoegen van nieuwe functies.

Tags worden gebruikt om een versie van een project te markeren &CVS; stempelt één versie van elke bestand met de tag, dus wanneer u een checkout doet of bijwerkt naar een specifieke tag, dan krijgt u altijd dezelfde versies van de bestanden. Daarom zijn, in tegenstelling tot branches, tags niet dynamisch: u kunt niet op een tag ontwikkelen. Tags zijn bruikbaar om uitgaven te markeren, grote wijzigingen in de code, &etc;.

Wanneer u een softwareproject ontwikkeld of de ontwikkeling volgt, dan werkt u niet noodzakelijk altijd met de hoofdbranch. Na een vrijgave, kunt blijven een poosje bij de vrijgegeven branchwillen blijven, om te genieten van zijn relatieve stabiliteit, bugs repareren, bronnen vertalen, &etc; Om dat allemaal te doen, moet u de vrijgegeven branch bijwerken. Al uw bestanden zullen worden bijgewerkt tot de laatste versie van de bestanden in die branch. Na bijwerken zullen alle uw nieuwe commits ook geüpload worden naar de nieuwe branch.

Ook als u een bug wil nagaan die is gerapporteerd tegen een oude vrijgave met een tag, dan biedt &CVS; u de mogelijkheid om de software op te halen zoals deze was vrijgegeven, door bij te werken naar die tag. Daarnaast kunt u, als u een oude versie van uw project ophalen, dan kunt u uw werkkopie bijwerken naar een specifieke datum. Dit kan nuttig zijn als er een fout is in het project geïntroduceerd tussen twee vrijgaven en u bent van mening over wanneer dat was. Wanneer u bijwerkt naar een datum of tag, dan zullen de versies van uw bestanden hetzelfde zijn als de versies op die specifieke datum of de versies gestempeld door die tag.

Alvorens naar een verschillende branch of tag bij te werken, is het belangrijk dat u al uw wijzigingen vastlegt in de branch waarmee u werkt. Als u niet klaar bent om uw wijzigingen vast te leggen, maar u wilt ze niet weggooien, werk dan nieuwe branch niet bij, omdat u uw wijzigingen zou kunnen verliezen. Als alternatief, kunt u een nieuwe checkout doen, om parallel te werken met beide versies.

Een schermafdruk van het venster bijwerken naar tag

Een schermafdruk van het venster bijwerken naar tag

Bijwerken naar branch

  Selecteer deze optie om een branch bij te werken. Voer de naam van de branch in in het afroltekstvak (of druk op de knop Lijst ophalen om de lijst met branches vanuit de &CVS; server op te halen en selecteer diegene die u wilt uit de lijst in het afrolvak).

Bijwerken naar tag

  Selecteer deze optie om naar een tag bij te werken. Voer de naam van de tag in in het afroltekstvak (of druk op de knop Lijst ophalen om de lijst met tags vanuit de &CVS; server op te halen en selecteer diegene die u wilt uit de lijst in het afrolvak).

Bijwerken naar datum

  Selecteer deze optie om naar een datum bij te werken. In het onderstaande veld, kunt u een brede variëteit van datumformaten invoeren. Een mogelijk formaat is `yyyy-mm-dd` waar `yyyy` het jaar is, `mm` de maand is (numeriek) en `dd` de dag is. Alternatieven zijn enige Engelse uitdrukkingen zoals `yesterday` of `2 weeks ago`.

Beide opties maken de tag of datum 'sticky', wat wil zeggen dat je geen verdere wijzigingen kunt vastleggen (commit) op die bestanden (tenzij de tag een branch tag is). Om terug te kunnen keren naar de [trunk], ook wel bekend als de branch met de naam `HEAD` gebruik dan het menu-item Geavanceerd Bijwerken naar HEAD.

Het uitgevoerde commando om bij te werken naar een branch of tag is:

    cvs update -r tag

Het uitgevoerde commando om bij te werken naar een datum is:

    cvs update -D date

Het uitgevoerde commando om bij te werken naar de hoofd branch (HEAD) is:

    cvs update -A

### Taggen en branching

We bespreken hier alleen maar de technische aspecten van tagging en branching. Wanneer u een gebruiker bent en niet de beheerder van de repository, dan zult u waarschijnlijk niet geconfronteerd worden met dit probleem. Wanneer u daarentegen wel de beheerder van een repository bent, kunt u beter eerst over de niet-technische problemen van branching lezen om een impressie te krijgen van hoe tijdsconsumptief en foutgevoelig het onderhouden van verschillende branches binnen een project kan zijn. De appendix bevat enkele referenties over dit onderwerp.

Simpel tagging is iets wat u normaliter doet wanneer een uitgave (release) wordt gedaan zodat op ieder moment in de toekomst makkelijk kunt terugkeren naar de status van het project op een bepaalde tijdstip in het verleden. Tags krijgen meestal een naam die bestaat uit de projectnaam en het versienummer. Bijvoorbeeld &cervisia; 1.0 is beschikbaar onder de tag `CERVISIA_1_0`. &cervisia; dwingt strikte &CVS;-regels af over wat nu een geldige tag-naam is. Het moet beginnen met een letter en mag bestaan uit letters, verbindingstreepjes en underscores.

Normaal gesproken wilt u het hele project voorzien van een tag (alhoewel &CVS; het ook toelaat dat u slechts een subset markeert met een tag). Om dit te bereiken, markeert u de hoofdmap in de weergave en kiest u voor Geavanceerd Tag/Branch. Vul nu de naam in van de tag en druk op de toets Return en u bent klaar.

Een branch aanmaken is niet veel moeilijker. In het dialoogvenster voor het aanmaken van tags activeert u Branch aanmaken met deze tag. U kunt ook een bestaande tag verwijderen. Kies Geavanceerd Tag verwijderen in de hoofdweergave.

Een ander aspect van branching is het samenvoegen van wijzigingen van een branch naar de huidige branch. Wanneer u dit gaat doen, kiest u Geavanceerd Samenvoegen.... Het venster wat dan verschijnt geeft u twee mogelijkheden:

Ofwel u mag alle wijzigingen op een branch samenvoegen met de huidige branch. In dat geval kiest u voor Samenvoegen van branch en vult u de branch in waarmee u wilt samenvoegen. &cervisia; zal dan het volgende commando uitvoeren:

    cvs update -j branchtag

De andere mogelijkheid is dat u alleen wijzigingen wilt samenvoegen die gemaakt zijn tussen twee tags op een branch. Dit gebeurt meestal wanneer u een aantal malen samenvoegt van dezelfde branch naar de [trunk]. In dat geval kiest u voor Aanpassingen samenvoegen en vul (in de juiste volorde) de twee betreffende tags in. Dit zal dan resulteren in het commando

    cvs update -j branchtag1 -j branchtag2

### Watches gebruiken

Een watch is een conventionele naam voor de mogelijkheid binnen &CVS; om gebruikers van de repository in te lichten wanneer een bestand gewijzigd is of wanneer een ontwikkelaar is begonnen met het bewerken van een bestand. Het gebruik van watches vereist dat het bestand``$CVSROOT`/CVSROOT/notify` correct is ingesteld. Hier gaan we verder niet op in, wanneer u verdere informatie nodig heeft hoe u dit kunt instellen, vanuit het oogpunt van de systeembeheerder, kunt u één van de boeken lezen die genoemd worden in de appendix.

&cervisia; ondersteunt hoofdzakelijk watches via zes menu-opties.

Om een watch toe te voegen op een of meerdere bestanden, gebruik dan Geavanceerd Watch toevoegen.... In het dialoogvenster dat u krijgt kunt u kiezen voor welk type voorval, dat door &CVS; wordt ondersteund, u gewaarschuwd wil worden. Bijvoorbeeld, wanneer u alleen maar gewaarschuwd wil worden wanneer een bestand wordt vastgelegd (commit) selecteer dan de keuzeoptie Alleen en Vastleggingen (commits). Wanneer u gewaarschuwd wilt worden over elk voorval met de gemarkeerde bestanden selecteer dan de keuzeoptie Alles. De bijbehorende commandoregel is:

    cvs watch add -a commit bestandsnamen

of met een soortgelijk commando, afhankelijk van het voorval dat u in de gaten wilt houden.

Wanneer u niet meer geïnteresseerd bent in het "watchen" van deze bestanden dan kunt u de toegepaste watches verwijderen. Om dit te bereiken gebruikt u Geavanceerd Watch verwijderen.... In het dialoogvenster dat u krijgt, zijn dezelfde opties voorhanden als toen u de watch toevoegde. Wanneer u dit dialoogvenster bevestigt gebruikt &cervisia; het commando:

    cvs watch remove bestandsnamen

mogelijk met de parameter `-a` voor het gekozen voorval.

Uiteindelijk kunt u een lijst van mensen krijgen die een aantal bestanden volgen. Kies Geavanceerd Watchers tonen. Gebruik van deze menu-optie zal het volgende commando genereren:

    cvs watchers bestandsnamen

Normaliter zal iedere ontwikkelaar apart werken in zijn uitgecheckte sandbox. Wanneer hij een bestand wil aanpassen, kan hij deze gewoon aanpassen in zijn editor en eraan werken. Niemand anders zal hiervan op de hoogte zijn totdat hij zijn werk vastlegt (commit).

Voor sommige ontwikkelaarsgroepen is dit niet het gewenste samenwerkingsmodel. Zij prefereren dat zij worden gewaarschuwd wanneer iemand aan een bestand gaat werken. Dit kan bereikt worden door &CVS;-commando's. Voordat u begint met het bewerken van een bestand, selecteert u het en kiest Geavanceerd Bestanden bewerken in het hoofdvenster van &cervisia;. Dit zal het volgende commando uitvoeren:

    cvs edit bestandsnamen

Dit zal een melding sturen naar iedereen die de watch `Bestanden bewerken` op dit bestand heeft gezet. Het zal u tevens registreren als een editor van het bestand. U kunt een lijst verkrijgen van alle mensen die bestanden bewerken via Geavanceerd Editors tonen. Dit staat gelijk aan het volgende wat men op de commandoregel kan typen:

    cvs editors bestandsnamen

Een sessie waarbij men het bestand bewerkt wordt automatisch beeindigd wanneer men het betreffende bestand vastlegt (commit). Op dat moment zal een melding `bewerking beëindigd` gestuurd worden naar iedereen die een watch heeft geregistreerd op het bestand. Natuurlijk zou u soms niet het bestand willen vastleggen maar eerder de sessie waarbij men het bestand aan het bewerken is beëindigen en terugkeren naar de vorige versie van het bestand. Dit wordt gedaan door gebruik te maken Geavanceerd Bestandsbewerking verwijderen. Merk op dat &cervisia; geen bevestiging zal vragen! Dat betekent dat bij gebruik van deze menu-optie al uw werk sinds het gebruik van Geavanceerd Bestanden bewerken ongedaan gemaakt zal worden. &cervisia; zal het volgende commando gebruiken:

    echo y | cvs unedit bestandsnamen

Tot nog toe hebben we alleen het geval besproken waarbij bestanden werden bewerkt of waarbij de bewerking vrijwillig door de ontwikkelaars ongedaan werd gemaakt. Daar komt bij dat CVS een model ondersteunt waarbij men het gebruik van deze commando's afdwingt. Het commando wat verantwoordelijk is om naar dit model om te schakelen is het `commando cvs watch on` waarop we in deze helptekst niet verder zullen gaan omdat het meestal gebruikt wordt door de beheerder van de repository. Daarentegen is het een belangrijk gegeven vanuit het oogpunt van de ontwikkelaar wanneer het project [edits] afdwingt dat men werkt op een werkkopie die alleen-lezen is. Wat betekent dat je een bestand standaard niet kan bewerken (tenzij u dingen gaat uithalen zoals `chmod`). Alleen wanner je gebruik maakt van Geavanceerd Bestanden bewerken, wordt het bestand weer beschrijfbaar. Het wordt weer alleen-lezen gemaakt wanneer je het bestand vastlegt (commit) of wanneer je Geavanceerd Bestandsbewerking verwijderen.

De editor interface van Cervisia helpt u met projecten waarbij men watches op een andere wijzeafdwingt . Wanneer u net de editor gestart hebt met een bestand die alleen-lezen is door erop te dubbelklikken of via Bestand Bewerken, zou het niet mogelijk zijn om vervolgens uw aanpassingen later te bewaren. Dit heeft natuurlijk een reden. Wanneer u een bestand wilt veranderen zult u eerst het commando cvs edit moeten draaien zodat alle mensen die het bestand in de gaten houden (middels watch) een melding krijgen dat u aan het bestand werkt.

In zo'n geval is het aan te raden om de optie Instellingen cvs edit automatisch uitvoeren wanneer nodig. Wanneer het dan nodig is een bestand te bewerken door erop te dubbelklikken zal &cervisia; het commando `cvs edit` uitvoeren alvorens de editor daadwerkelijk wordt aangeroepen. Vervolgens kunt u het bestand zoals gewoonlijk bewerken. Wanneer u klaar bent met uw werk, legt u de bestanden vast en vervolgens zijn de vastgelegde bestanden weer alleen-lezen.

### vergrendelen

Het ontwikkelmodel dat meestal wordt gevolgd met CVS wordt unreserved checkouts genoemd. Iedere ontwikkelaar heeft zijn eigen sandbox waar hij zijn bestanden naar hartelust kan bewerken. Wanneer een van de watch mogelijkheden wordt gebruikt zoals cvs edit, kunnen verschillende ontwikkelaars tegelijkertijd synchroon aan bestanden werken. Veranderingen die gedaan zijn door een andere ontwikkelaar worden samengevoegd (merge) in de lokale sandbox wanneer men een bijwerking (update) uitvoert.

Andere revisie controlesystemen zoals RCS en SourceSafe gebruiken een ander model. Wanneer een ontwikkelaar een bestand wil bewerken, zal hij deze moeten vergrendelen. Er kan maar een ontwikkelaar tegelijkertijd een bestand vergrendelen. Wanneer hij klaar is met bewerken zal de vergrendeling worden verwijderd. Aan de ene kant zijn met dit model geen conflicten mogelijk. Aan de andere kant kunnen twee ontwikkelaars niet tegelijkertijd werken aan hetzelfde bestand, zelfs wanneer de gemaakte wijzigingen geen invloed op elkaar hebben. Dit kan soms een probleem zijn. We gaan hier niet verder op in wat de organisatorisch voordelen zijn van beide benaderingen. Toch willen we aangeven dat &CVS; ondersteuning heeft voor vergrendeling, alhoewel het niet de geprefereerde manier is van hoe je kunt werken met CVS Je kunt het beste deze mogelijkheden niet gebruiken tenzij je er zeker van bent dat de projectmanager het toestaat.

Met &cervisia; kun je als volgt bestanden vergrendelen. Kies de gewenste bestanden in de hoofdweergave. Kies dan Geavanceerd Bestanden vergrendelen. Dit zal het commando uitvoeren:

    cvs admin -l bestandsnamen

Het omgekeerde effect wordt bereikt met Geavanceerd Bestanden ontgrendelen. Dit zal het commando uitvoeren:

    cvs admin -u bestandsnamen

## &cervisia; aanpassen

&cervisia; kan op allerlei manieren aangepast worden aan uw behoeften en voorkeuren, Sommige opties die u regelmatig zou willen veranderen zijn direct beschikbaar via het menu Instellingen.

### Algemeen

Gebruikersnaam voor de changelog-editor:

  Wanneer u ooit het menu-item Bestand Changelog-ingang invoegen... gebruikt, dan zal een nieuwe changelog-ingang worden gegenereerd met de huidige datum en uw gebruikersnaam. Normaal wordt het als goede stijl opgevat om uw volledige naam en uw e-mailadres in elk van uw changelog-ingangen in te voegen. &cervisia; voegt automatisch de ingevoerde volledige naam en e-mailadres hier in.

Pad naar CVS-programma of gewoon 'cvs':

  Hier kunt u de naam (of pad) naar het `cvs` programma instellen. Standaard wordt de &CVS;-toepassing, die in uw `$PATH` aanwezig is, door &cervisia; gebruikt.

### Diff-weergave

Aantal contextregels in diff-dialoog:

  Voor de diff-dialoog, gebruikt &cervisia; de optie `-U` voor `diff`. Dit maakt dat `diff` slechts een beperkt aantal regels rond elk verschillend gebied (contextregels). Hier kunt u het argument van `-U` instellen.

Additionele opties voor cvs diff:

  Hier kunt u extra argumenten toevoegen aan `diff`. Een populair voorbeeld is `-b` waarmee u `diff` wijzigingen in de hoeveelheid witruimte laat negeren.

Tabbreedte in diff-dialoog:

  In de diff-dialoog wordt te tab-tekens die aanwezig zijn in uw bestand of in de uitvoer van het commando `diff` geëxpandeerd naar een vast aantal spaties. Standaard wordt elk tab-teken vervangen door acht spaties, maar hier kunt u een ander aantal instellen.

Extern diff-programma:

  Wanneer u een van de in de diff-dialoog getoonde mogelijkheden gebruikt, zoals Beeld Verschil met de repository..., dan zal &cervisia; zijn interne diff-frontend aanroepen. Als u een voorkeur hebt voor een andere, zoals &kompare;, TkDiff of xxdiff, voer hier dan de naam en locatie van zijn bestand in.

### Status

Bij het openen van een sandbox van een repository op afstand, start dan automatisch het commando Bestand->Status

  Wanneer u deze optie activeert, dan wordt het commando Bestand Status gestart wanneer u een sandbox op afstand opent. Dit commando neemt enige tijd en heeft ook een verbinding met de server nodig voor repositories op afstand (offline gebruik is dan onmogelijk).

Bij het openen van een sandbox van een lokale repository, start dan automatisch het commando Bestand->Status

  Als u deze optie activeert wordt het commando Bestand Status gestart wanneer u een lokale sandbox opent.

### Geavanceerd

Tijdslimiet waarna een voortgangsdialoog verschijnt (in ms):

  Praktisch alle &CVS;-commando's, die in een sandbox worden gestart en bij een repository op afstand horen hebben een verbinding naar de &CVS;-server nodig. Dit wordt beïnvloedt door vertragingen in de netwerkverbinding of een hoge load van de server. Daarom opent &cervisia; voor commando's zoals Beeld Verschil met repository... een dialoog die aangeeft dat het commando nog steeds bezig is en die u in staat stelt om het af te breken. Verder wordt deze dialoog gebruikt om foutmeldingen van &CVS; te tonen. Omdat deze dialoog na enige tijd gaat vervelen, wordt deze pas na een bepaalde tijd, die standaard 4 seconden is, getoond. Hier kunt u deze waarde wijzigen.

Standaard compressieniveau:

  Het clientprogramma `cvs` comprimeert bestanden en patches wanneer zij over een netwerk wordt getransporteerd. Met de optie op de commandoregel, `-z`, kan het compressieniveau worden ingesteld. U kunt &cervisia; instellen om deze optie te gebruiken door het niveau hier in te stellen. De waarde hier ingesteld wordt alleen als een standaard gebruikt; er is ook een instelling per repository beschikbaar in Repository Repositories....

Gebruik een reeds actief ssh-agent-proces, of start een nieuw

  Activeer dit vakje als u ext (↱) repositories, de &ssh; remote shell, om met de repository te communiceren en ssh-agent gebruikt, om uw sleutels te beheren.

### Uiterlijk

Lettertype voor protocolvenster...

  Druk op deze knop om de dialoog Lettertype selecteren te openen om het gebruikte lettertype in het protocolvenster in te stellen (dit is het venster dat de uitvoer van de `cvs`-client toont).

Lettertype voor annotatieweergave...

  Druk op deze knop om de dialoog Lettertype selecteren te openen om het gebruikte lettertype in de annotatieweergave in te stellen.

Lettertype voor diff-weergave...

  Druk op deze knop om de dialoog Lettertype selecteren te openen om het gebruikte lettertype in de diff-weergave in te stellen

Kleuren

  Druk op de gekleurde knoppen om de dialoog Kleur selecteren, om de gebruikte kleur in te stellen voor Conflict, Lokale wijziging of Wijziging op afstand, in de hoofdweergave of Diff-wijziging, Diff-invoeging of Diff-verwijdering, in de diff-frontend ingebouwd in &cervisia;.

Hoofdvenster horizontaal splitsen

  &cervisia;'s hoofdscherm is normaal gesproken verdeeld in een venster met de boomstructuur weergave en een met de onderstaande uitvoer van &CVS;. U kunt ze ook naast elkaar zetten.

## Bijlage

### Genegeerde bestanden

In de hoofdboomstructuur laat &cervisia; niet alle bestanden zien die uiteindelijk daar zijn. Dit is analoog met `cvs` zelf en helpt overzicht te behouden veroorzaakt door oninteressante dingen zoals objectbestanden. &cervisia; probeert het `cvs`-gedrag zo goed mogelijk na te bootsen, &ie; dat het negeerlijsten van de volgende bronnen verkrijgt:

- Een lijst van ingangen die dingen invoegen zoals *.o en core Voor details zie de CVS -documentatie

- Het bestand $HOME/.cvsignore.

- De omgevingsvariabele $CVSIGNORE.

- Het bestand .cvsignore in hun respectivelijke directory

cvs zelf zoekt ook nog ingangen op in $CVSROOT/CVSROOT/cvsignore, maar dit is een bestand op de serer en Cervisia zou in staat moeten zijn om ffline om te kunnen starten . Wanneer je met een groep werkt dat prefereert om een negeerlijst op een server te gebruiken is het miscchien een goed idee om een blik te werpen op de patronen die daar zijn vermeldt en deze dan te vermelden .cvsignore in de eigen home directory.

### Verdere informatie en ondersteuning

- &CVS; komt met een complete set documentatie in de vorm van info-pagina's ook wel bekend als "The Cederqvists". Wanneer het correct is geinstalleerd kun je deze doorbladeren door het volgende te typen in de adresbalk van konqueror `info:/cvs` of u kunt Help CVS handleiding kiezen in &cervisia;. U kunt ook nog eens kiezen via Help CVS Info in Cervisia. Een online &HTML;-versie van Cederqvist is beschikbaar op het web.

  Aangezien dit boek samen met &CVS; wordt onderhouden is het meestal de meest bijgewerkte referentie. Toch kunnen we iedere andere vorm van documentatie aanbevelen om het gebruik van &CVS; te leren, vooral de volgende bronnen.

- Karl Fogel heeft een excellent boek geschreven Open Source Development with &CVS;. Bijna de helft van dit boek is over het ontwikkelproces van Open Source software. De andere helft behandelt de technische documentatie van &CVS;. Gelukkig is het technische gedeelte van het boek vrij verkr ijgbaar onder een GPL-licentie zodat u een &HTML;-versie kunt downloaden. Een errata-lijst is beschikbaar op bovengenoemde webpagina.

- CVS-zaken worden besproken op een mailinglijst

- Er is een USENET-groep comp.software.config-mgmt die zich bezighoudt met configuratiemanagement in het algemeen. CVS is alleen marginaal een onderwerp in deze groep, toch kan het interessant zijn om de voordelen van verschillende revisie controle systemen te bespreken vergeleken met CVS

- En al laatste is er ook nog Cervisia-mailinglijst met niet al te veel verkeer.

### Overzicht van de opdrachten

#### Het menu Bestand

Bestand Open Sandbox...

  Opent een sandbox in het hoofdvenster. Zie .

Bestand Recente sandboxes

  Opent een lijst met sandboxes die recent zijn gebruikt

Bestand ChangeLog-ingang invoegen...

  Opent de ChangeLog-editor, zodanig voorbereid dat u een nieuwe ingang kunt toevoegen met de huidige datum. Zie .

&Ctrl;U Bestand Bijwerken

  Start het commando 'cvs update' op de geselecteerde bestanden en verandert eventueel de status en revisienummers. Zie .

F5 Bestand Status

  Start het commando 'cvs -n update' op de geselecteerde bestanden en verandert eventueel de status en revisienummers. Zie .

Bestand Bewerken

  Opent het geselecteerde bestand in de standaard editor van &kde; voor het type van het geselecteerde bestand.

Bestand Oplossen (Resolve)...

  Opent een dialoog voor het geselecteerde bestand om u de mogelijkheid te geven samenvoeg-conflicten op te lossen. Zie .

# Bestand Vastleggen (commit)...

  Stelt u in staat om de geselecteerde bestanden vast te leggen. Zie .

Ins Bestand Aan repository toevoegen...

  Stelt u in staat de geselecteerde bestanden aan de repository toevoegen. Zie .

Bestand Binair toevoegen...

  Stelt u in staat de geselecteerde bestanden aan de repository toevoegen als binaire bestanden (`cvs add `-kb``). Zie .

Del Bestand Uit repository verwijderen...

  Stelt u in staat de geselecteerde bestanden uit de repository te verwijderen. Zie .

Bestand Ongedaan maken

  Negeert de lokale veranderingen die u hebt gemaakt op de geselecteerde bestanden en maakt deze ongedaan door terug te keren naar de versie die in de repository is te vinden.(Optie `-C` bij `cvs update`).

&Ctrl;Q Bestand Afsluiten

  Sluit &cervisia;

#### Het menu Beeld

Escape Beeld Stoppen

  Stopt ieder proces dat op dit moment actief is.

&Ctrl;L Beeld Logbestand doorbladeren...

  Toont de log-browser van de geselecteerde versies van het bestand. Zie .

&Ctrl;A Beeld Annoteren...

  Laat een annotatie-weergave zien van het geselecteerde bestand, &ie; een weergave waarbij u voor iedere regel kunt zien wie als laatste de regel heeft aangepast. Zie .

&Ctrl;D Beeld Verschil met repository (BASE)...

  Laat de verschillen zien tussen het geselecteerde bestand in de sandbox en de versie die u als laatste hebt bijgewerkt (BASE). Zie .

&Ctrl;H Beeld Verschil met repository (HEAD)...

  Laat de verschillen zien tussen het geselecteerde bestand in de sandbox en de versie die u als laatste hebt bijgewerkt (HEAD). Zie .

Beeld Laatste wijziging...

  Laat de verschillen zien tussen de revisie van het geselecteerde bestand die u het laatst hebt bijgewerkt (BASE) en de revisie daarvoor. Zie .

Beeld Geschiedenis...

  Laat de &CVS;-geschiedenis zien zoals deze gemeld wordt door de server. Zie .

Beeld Alle bestanden verbergen

  Bepaalt of alleen mappen worden getoond in het hoofdvenster met boomstructuurweergave. Zie .

Beeld Niet-gewijzigde bestanden verbergen

  Bepaalt of onbekende en bijgewerkte bestanden worden verborgen in het hoofdvenster met boomstructuurweergave. Zie .

Beeld Verwijderde bestanden verbergen

  Bepaalt of verwijderde bestanden worden verborgen in het hoofdvenster met boomstructuurweergave. Zie .

Beeld Niet-CVS bestanden verbergen

  Bepaalt of bestanden, die niet in &CVS; zitten, worden verborgen in het hoofdvenster met de boomstructuurweergave. Zie .

Beeld Lege mappen verbergen

  Bepaalt of mappen zonder zichtbare ingangen verborgen worden in het hoofdvenster met de boomstructuur. Zie .

Beeld Boomstructuur uitvouwen

  Opent alle branches in de boomstructuur zodat alle bestanden en mappen zichtbaar worden. Zie .

Beeld Boomstructuur invouwen

  Sluit alle branches in de boomstructuur. Zie .

#### Het menu Geavanceerd

Geavanceerd Tag/Branch...

  Stelt de tags of branches van de geselecteerde bestanden in. Zie .

Geavanceerd Tag verwijderen...

  Verwijdert een gegeven tag van de geselecteerde bestanden. Zie .

Geavanceerd Update naar Tag/datum uitvoeren...

  Werkt de geselecteerde bestanden bij naar een bepaalde tag of datum en maakt deze sticky. Zie .

Geavanceerd Update naar HEAD uitvoeren

  Brengt de geselecteerde bestanden naar de revisie HEAD. Zie .

Geavanceerd Samenvoegen...

  Voegt een bepaalde branche of wijzigingen tussen twee tags samen in de geselecteerde bestanden. Zie .

Geavanceerd Watch toevoegen...

  Voegt een watch toe voor een serie gebeurtenissen op de geselecteerde bestanden. Zie .

Geavanceerd Watch verwijderen...

  Verwijdert een watch voor een serie gebeurtenissen op de geselecteerde bestanden. Zie .

Geavanceerd Watchers tonen

  Lijst van watchers tonen van de geselecteerde bestanden. Zie .

Geavanceerd Bestanden bewerken

  Start het commando `cvs edit` voor de geselecteerde bestanden. Zie .

Geavanceerd Bestandsbewerking verwijderen

  Start het commando `cvs unedit` voor de geselecteerde bestanden. Zie .

Geavanceerd Editors tonen

  Start het commando `cvs editors` voor de geselecteerde bestanden. Zie .

Geavanceerd Bestanden vergrendelen

  Vergrendelt de geselecteerde bestanden. Zie .

Geavanceerd Bestanden ontgrendelen

  Ontgrendelt de geselecteerde bestanden. Zie .

Geavanceerd Patch tegen repository aanmaken...

  Maakt een patch van de wijzigingen in uw sandbox. Zie .

#### Het menu Repository

Repository Aanmaken...

  Opent een dialoog die u toestaat om een nieuwe lokale repository aan te maken. Zie .

Repository Checkout...

  Opent een dialoogvenster die u toestaat om een module van de repository uit te checken. Zie .

Repository Import...

  Opent een dialoog die u toestaat om een pakket te importeren in de repository. Zie .

Repository Repositories...

  Configureert een lijst van repositories die u vaak gebruikt en hoe u ze kunt benaderen. Zie .

#### Het menu Instellingen

Instellingen Werkbalk tonen

  Bepaalt of de werkbalk wordt getoond.

Instellingen Mappen aanmaken bij bijwerken

  Bepaalt of updates mappen aanmaken in de sandbox die er niet eerder waren (Parameter `-d` bij een `cvs update`).

Instellingen Lege mappen verwijderen bij update

  Bepaalt of updates lege mappen verwijderen in de sandbox. (Parameter `-P` bij `cvs update`).

Instellingen Bijwerken recursief uitvoeren

  Bepaalt of bijwerken recursief uitgevoerd dient te worden (Parameter `-r` bij `cvs update`).

Instellingen Recursief vastleggen (commit) & verwijderen (remove)

  Bepaalt of vastleggingen (commits) en verwijderingen recursief zijn (Parameter `-r` bij `cvs add` en `cvs remove`).

Instellingen'cvs edit' automatisch uitvoeren wanneer nodig

  Bepaalt of het commando `cvs edit` automatisch wordt uitgevoerd wanneer u een bestand bewerkt.

Instellingen Sneltoetsen instellen

  Opent een dialoog voor het configureren van sneltoetsen.

Instellingen Werkbalken instellen...

  Opent een dialoog voor het instellen van de werkbalken van &cervisia;.

Instellingen&cervisia; instellen...

  Opent een venster voor het instellen van Cervisia.

#### Het menu Help

&help.menu.documentation;

Naast het standaard menu-items in Help van &kde; zoals boven beschreven hebt u dit extra menu-item:

Help CVS Handboek

  Opent de &CVS;-informatiepagina's in het &kde;-hulpsysteem.

## Dankbetuigingen en licentie

Programma copyright

- 1999-2002 &Bernd.Gehrmann; &Bernd.Gehrmann.mail;

- 2002-2008 de auteurs van &cervisia;

Documentatie Copyright 1999-2002 &Bernd.Gehrmann; &Bernd.Gehrmann.mail; en 2004 Carlos Woelz carloswoelz@imap-mail.com

&meld.fouten;&vertaling.freek; &underFDL; &underGPL;