'man cvs'
tarjoaa kattavan listan komentoriviparametreista,
joskin on hieman vaikeaselkoinen.CVS tulee sanoista Concurrent Versions System. Kuten versionhallintajärjestelmät yleensä, se tarjoaa turvallisen keinon tiedostojen hallintaan ja muokkaukseen. Sen tarkoituksena on pitää tallessa tiedostojen eri versiot ja pitää huoli siitä, ettei tiedostojen yhtäaikainen editointi tuota ongelmia. Käyttäjän kannalta tämä tarkoittaa erityisesti sitä, että muutetut tiedostot on säännöllisin väliajoin päivitettävä versiointiin.
Tarvittaessa voidaan näin palata tiedoston aiempaan, toimivaan versioon, jos esim. uusin versio korruptoituu tai jostain syystä ei enää toimi halutulla tavalla. Lisäksi yleensä CVS:n alaiset tiedostot varmuuskopioidaan useammin kuin muut.
CVS käyttää ns. keskusvarastoa (central repository), johon sen alaiset tiedostot tallentuvat. Käyttäjillä on omat paikalliset kopionsa keskusvaraston tiedostoista, joita voidaan muokata aivan kuin mitä tahansa paikallisia tiedostoja. Tiedostot sisältyvät moduliin, joka vastaa ylimmän tason hakemistoa keskusvarastossa (ja paikallisestikin).
CVS-ohjelmisto löytyy laitoksella valinnaisten ohjelmien joukosta /opt -hakemistosta, joten polku /opt/cvs/bin on lisättävä erikseen PATH- ja MANPATH-muuttujiin. Jotta polkuasetukset olisivat pysyviä kannattaa seuraavat rivit lisätä omaan .profile-tiedostoon:
if [ "X$GROUP" = "X" ]; then export PATH="$PATH:/opt/cvs/bin" export MANPATH="$MANPATH:/opt/cvs/man" fi
CVS tarvitsee lisäksi ympäristömuuttujaa CVSROOT, joka pitää asettaa osoittamaan keskusvarastoon. Doka-ryhmän tapauksessa asetus on seuraava bash-ympäristössä:
export CVSROOT="/home/group/doka/cvsroot"
Tämäkin asetus kannattanee tallentaa .profile -tiedostoon.
Oma kopio CVS-modulista voidaan asentaa mihin tahansa oman kotihakemiston alle; kannattaa kuitenkin tehdä CVS-moduleille oma hakemistonsa, esim. ~/cvs - selkeyden vuoksi. Kun moduleita haetaan, pitää ensin siirtyä kyseisen hakemiston sisälle.
Moduli haetaan komennolla cvs checkout <moduli>
.
Doku-ryhmälle on luotu kolme eri modulia:
Nämä modulit siis saadaan omaan käyttöön komennoilla:
cvs checkout src cvs checkout doc cvs checkout ext
Kun moduli on siirtynyt paikalliseen hakemistoon, sen sisältämiä tiedostoja voidaan muokata vapaasti. Mitkään muutokset eivät vaikuta keskusvarastossa sijaitseviin versioituihin tiedostoihin niin kauan kuin muutoksia ei vahvisteta (ks. seuraava kappale). Toisaalta vahvistamattomat muutokset eivät myöskään pysy turvassa jos vaikka tiedostot vahingossa tuhotaan.
CVS-komennot ovat yleensä muotoa:
cvs <toiminto> [<tiedosto>]
Tiedostoa ei aina määritellä. Useat CVS-komennot kuitenkin
haluavat käyttäjältä jonkinlaisen logimerkinnän, ja
jos sitä ei anneta komentoriviltä, CVS käynnistää
editorin sen kirjoittamista varten. Laitoksella tuntuu vakiona olevan editorina
uemacs, jota en ainakaan itse hyvällä tahdollakaan saanut
tunnistamaan Control-s -painallusta, joka siinä mappaantuu XON-komennoksi
joka pysäyttää ruudun päivityksen (Control-q vapauttaa
sen). En myöskään saanut systeemiä kunnioittamaan
EDITOR-ympäristömuuttuja-asetustani, joten päädyin
antamaan kommentit suoraan komentoriviltä. Tämä onnistuu
-m
- parametrilla, mutta on huomioitava että kommentti tulee
sijoittaa komentorivillä heti toimintokomennon perään
esim. seuraavasti:
cvs commit -m "pari bugia korjattu" JokuTiedosto.java
Jos halutaan lisätä versionhallintaan tiedosto joka ei
ole siellä ennestään, se onnistuu add
-komennolla:
cvs add UusiTiedosto.java
add
-komennolla voidaan lisätä myös uusia
(omassa hakemistossa jo olemassaolevia) alihakemistoja:
cvs add uusihakemisto
HUOM: Alihakemiston sisällä mahdollisesti olevat tiedostot tulee tällöin lisätä erikseen.
Kun versionhallinnassa jo olemassaolevaan tiedostoon paikallisesti tehdyt
muutokset halutaan vahvistaa ja siten päivittää keskusvarastoon,
käytetään commit
-komentoa:
cvs commit UusiTiedosto.java
HUOM: Muutosten vahvistamista ei toki kannata harrastaa liian
usein (esim. joka ikisen talletuksen jälkeen), vaan yleensä kun
koodia on kertynyt olennaisesti lisää tai kun joku olennainen
ominaisuus on implementoitu. Nyrkkisääntönä kerran
vuorokaudessa (tai parissa) tehty commit on riittävä, olettaen
tietysti että tiedostot ovat sinä aikana muuttuneet. Huomaa
myös, että tekemäsi muutokset eivät näy muille
ennenkuin tiedosto on päivitetty commit
-komennolla.
Keskusvarastoon commit
-komennolla tehdyt päivitykset
saadaan näkyviin paikallisessa hakemistossa
käyttämällä update
-komentoa:
cvs update
Tai, jos halutaan vain katsastaa erot oman kopion ja versionhallinnassa olevan kopion välillä ilman varsinaista päivitystä:
cvs -n update
Tiedoston poisto versiohallinnasta onnistuu remove
-kommennolla:
rm PoistoTiedosto.java cvs remove PoistoTiedosto.java cvs commit PoistoTiedosto.java
Kun jossain vaiheessa modulien sen hetkinen tila halutaan säilyttää jotta se voidaan aina tarvittaessa saada pakettina ulos, pitää kokonaisuus "tagata":
cvs tag doka_31_5_2003
Tämän jälkeen kyseisen komennon aikaisen tilan tiedostot voidaan koska tahansa hakea komennolla:
cvs export -r doka_31_5_2003