IB4L4IB
Cursus Linux voor Informaticabeheer
Home

Medewerkers

Visie

Mailinglist

CVS

Cursussen

SourceForge Logo

CVS toegang


Wat is CVS?

CVS staat voor Concurrent Versions System. Het is een systeem dat toelaat om aan versiebeheer te doen, dat wil zeggen alle versies van van de bestanden die wij bijwerken worden bijgehouden in één CVS-tree. Natuurlijk wordt er meestal aan de laatste versie gewerkt, maar soms kan het handig zijn om naar een vroegere versie van een bestand terug te grijpen.

Het grote voordeel van CVS zit hem in het woord ``Concurrent''. CVS laat toe dat meerdere mensen hetzelfde bestand bewerken. Tevens verplicht het je om een kleine boodschap te schrijven over het hoe en het waarom van je veranderingen.

Wij maken gebruik van de faciliteiten die SourceForge ons biedt: de CVS-tree bevindt zich dan ook op SourceForge. Je kan de tree via het web bekijken op http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/?cvsroot=inf-beheer.

Hoe gebruik je CVS?

Je kan de instructies hieronder doornemen als je nog niet bekend bent met CVS en CVS uitsluitend voor dit project wil gebruiken. Als je meer uitleg wenst over CVS kan je best de informatie op CvsHome lezen.

Anonymous CVS

Anonymous CVS geeft je read-only toegang tot ons CVS-archief. Dit is bedoeld voor mensen die zich afvragen wat er allemaal gebeurt, maar niet direct geïnteresseerd zijn om mee te werken (tss, tss), of er geen tijd voor hebben.

1. Configureren

Maak ergens een directory aan (bv. met de naam inf-beheer), verplaats je naar die directory en zet de environment-variabele CVSROOT als volgt:

$ CVSROOT=:pserver:anonymous@cvs.inf-beheer.sourceforge.net:/cvsroot/inf-beheer
$ export CVSROOT

2. Inloggen

Inloggen doe je als volgt:

$ cvs login
(Logging in to anonymous@cvs.inf-beheer.sourceforge.net)
CVS password: <emtpy>

Ziezo, je bent ingelogd.

3. Initiële checkout

Je moet het archief één keer in zijn geheel naar je computer overbrengen. Deze actie noemt checkout

$ cvs -z3 checkout main
cvs server: Updating main
U main/README.structuur
cvs server: Updating main/bdr-notas
...

Er wordt nu een directory main aangemaakt, met daarin alle modules. (www/ bdr-notas/). Deze actie moet je niet meer herhalen, tenzij je de ganse directory wegveegt.

4. Updaten

Omdat er natuurlijk constant iets verandert (of zo zou het toch moeten), moet je van tijd tot tijd je copy van de CVS-tree updaten. Hiervoor ga je in de directory main/ staan en doe je:

$ cvs -z3 update -Pd
cvs server: Updating .
cvs server: Updating bdr-notas
cvs server: Updating bdr-notas/linux
cvs server: Updating bdr-notas/shell
cvs server: Updating www

5. Veranderen

Je kan lokaal alles veranderen, maar daar heeft natuurlijk niemand iets aan. Je kan deze veranderingen niet wegschrijven naar CVS, daar heb je write-access voor nodig. Als je een kleine wijziging wil aanbrengen, kan je best het bestand wat je wil veranderen kopiëren en de wijzingen tussen jouw copy en het origineel naar de mailinglist sturen. Deze wijzingen genereer je d.m.v.:

$ diff -u origineel_bestand gewijzigd_bestand > wijzingen.txt
Of, via CVS:
$ cvs diff -u > wijzigingen.txt

Indien je echt alles wil wijzigen, en wij vinden dat goed :-), kan je best een mailtje sturen naar de projectverantwoordelijke, zodanig dat je write-access bekomt.

Write access:

Het volgende stuk is enkel bedoeld voor mensen die geregistreerd zijn als ontwikkelaar.

1. configureren

De mensen die door Yvan als developer zijn geregistreerd hebben write-access in CVS. Zij gebruiken de volgende instructies:

CVS_RSH=ssh
CVSROOT=@cvs.inf-beheer.sourceforge.net:/cvsroot/inf-beheer
export CVS_RSH CVSROOT

Om het makkelijker te maken kan je deze instructies best in een bestand bewaren (bv. CVSDEFINITIONS), en dan dit bestand door de shell laten sourcen:

$ . CVSDEFINITIONS

2. Initiëel checkout en updates

Zie hierboven, bij anonymous CVS-access.

3. Veranderen

Wens je iets te veranderen, dan kan je dat gewoon doen, maar op die manier weten andere ontwikkelaars niet dat jij dat bestand aan het bewerken bent. Op zich kan dat niet zo veel kwaad (CVS is in staat om wijzigingen die niet met elkaar conflicteren samen te voegen), maar het is, vooral in dit project, gemakkelijker als één bestand niet door meerdere personen tegelijk bewerkt wordt. Daarom doe je best

$ cvs editors <bestandsnaam>

om te kijken of iemand anders het bestand al aan het bewerken is, en zo niet

$ cvs edit <bestandsnaam>

Wens je een bestand aan CVS toe te voegen, dan doe je dat met

$ vi <bestandsnaam>
$ cvs add <bestandsnaam>

Wens je een bestand te verwijderen, dan doe je dat met:

$ rm <bestandsnaam>
$ cvs remove <bestandsnaam>

Wens je een ganse directory met bestanden te importen, dan moet je eerste de directory toevoegen ("cvs add <dir>"), en nadien alle bestanden ("cd <dir>; cvs add *")

Hierna doe je

$ cvs commit

om de veranderingen in de CVS-tree te importeren. Er zal je gevraagd worden om een korte beschrijving van je wijzigingen in te geven. Hou dit zo klaar en bondig mogelijk. (tip: cvs commit plaatst je in je editor, aangegeven door de EDITOR environment variabele. Indien je deze variabele niet verandert kom je in vi terecht. Moest je niet met vi overweg kunnen (shame on you), verander dan de environment variabele.)

Wens je bepaalde bestanden of directories uit CVS uit te sluiten, dan maak je een bestand in die directory aan met de naam ".cvsignore", met daarin de namen van de bestanden die niet in CVS mogen terechtkomen.

4. Veranderingen bekijken

Om de veranderingen in CVS te bekijken kan je het volgende doen:

$ cvs log index.php (of eender welke <bestandsnaam>)
RCS file: /cvsroot/inf-beheer/main/www/index.php,v
Working file: index.php
...
total revisions: 4;     selected revisions: 4
description:
----------------------------
revision 1.4
date: 2001/03/25 13:45:46;  author: benderydt;  state: Exp;  lines: +1
-1
added a CVS-Id
----------------------------
revision 1.3
date: 2001/03/24 16:09:34;  author: benderydt;  state: Exp;  lines: +1
-1
Typo on Frontpage :-(
----------------------------
...

Wens je de wijzigingen tussen een bepaalde versie en de nieuwe versie te bekijken, dan doe je: (bijvoorbeeld om de veranderingen tussen versie 1.3 en de huidige versie te bekijken)

$ cvs diff -u -r 1.3 index.php
Index: index.php
===================================================================
RCS file: /cvsroot/inf-beheer/main/www/index.php,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- index.php   2001/03/24 16:09:34     1.3
+++ index.php   2001/03/25 13:45:46     1.4
@@ -9,4 +9,4 @@
   Enkele voorlopige teksten kan je al lezen op de <a href=...> ...
   bij sourceforge.
 
-<?php inf_footer()?>
+<?php inf_footer('$Id: cvs.php,v 1.10 2001/07/31 20:15:09 yoe Exp $')?>

Wat gebeurt er allemaal in CVS?

Je bent een verbeten ontwikkelaar, en je kan er niet tegen dat je ook maar één stukje van de actie mist. Dan kan je je best inschrijven op de mailing-list inf-beheer-cvs-commit@lists.sourceforge.net. Op deze mailinglist verschijnt informatie over alle veranderingen in CVS. Technisch gezien wordt elke cvs commit op deze mailinglist gepost.

Inschrijven op deze mailinglist kan hier.

  $Id: cvs.php,v 1.10 2001/07/31 20:15:09 yoe Exp $