CVS - kommandolinjeverktøyet
Gjøre klart for bruk av CVS
CVS kan benyttes på NTNUs login-servere, linuxlogin.stud.ntnu.no. Det første som må gjøres når man vil benytte CVS er å lage en såkalt CVS-rot. Det er under denne at alt vil bli lagret. La oss si man ønsker å opprette en CVS-rot på en katalog ved navn cvs på sitt hjemmeområde. Man begynner med å opprette katalogen:
tiger:~$ mkdir cvs
Man kan så opprette CVS-roten i denne katalogen med kommandoen
tiger:~$ cvs -d ~grip/cvs init
Argumentet -d ~grip/cvs indikerer hvor CVS-roten er (bytt ut grip med ditt eget brukernavn). For å slippe å skrive dette i alle kommandoene før man har opprettet prosjektet, kan man skrive
tiger:~$ export CVSROOT=~grip/cvs
Dette vil opprette en miljøvariabel, CVSROOT, som inneholder banen til CVS-roten.
Opprette et prosjekt
Alt er klart til å begynne å opprette prosjekter for å lagre i CVS. La oss si at det finnes en katalog java, med et programmeringsprosjekt i, som man vil benytte CVS for. Man kan da gå inn i katalogen og opprette CVS-prosjektet med alle filene og underkatalogene til java-katalogen:
tiger:~$ cd java
tiger:~/java$ cvs import -m "Et java-prosjekt" javaprosjekt eksempel start
N javaprosjekt/en_fil.java
N javaprosjekt/testfil.java
No conflicts created by this import
Man bør få en utskrift som ligner på den ovenfor, som indikerer at filene som er listet opp er lagt til i det såkalte CVS-repository'et for prosjektet, som er en plass under CVS-roten der all dataen lagres. Navnet på repository'et i eksemplet ovenfor er javaprosjekt. Dersom man ønsker det kan man nå slette hele java-katalogen. Alt er nemlig lagret i CVS-repository'et.
Jobbe med prosjektet
Dette er vel og bra, men det er ønskelig å arbeide med filene, og dessuten kunne opprette nye/slette gamle filer. Det man nå kan gjøre er å gå til en katalog der man ønsker å plassere filene, og skrive
tiger:~$ cvs checkout javaprosjekt
cvs checkout: Updating javaprosjekt
U javaprosjekt/en_fil.java
U javaprosjekt/testfil.java
Det vil nå bli opprettet en kopi av javaprosjektet i katalogen javaprosjekt. Dette er en lokal kopi som man kan herje med akkurat som man vil. Man kan forandre filene, slette filer, opprette nye filer etc. Det fine er at dette ikke endrer det som ligger i CVS-repository'et i det hele tatt. Når man føler at man har gjort noe nyttig, for eksempel at man har forandret filen testfil.java, kan man oppdatere repository'et med forandringene, ved å skrive
tiger:~/javaprosjekt$ cvs commit -m "Laget en ny utskriftsmetode" testfil.java
Checking in testfil.java;
/home/homej/gr/grip/cvs/javaprosjekt/testfil.java,v -- testfil.java
new revision: 1.2; previous revision: 1.1
done
Filen blir nå lagt til i repository'et sammen med kommentaren i hermetegn, men får et nytt versjonsnummer. Dermed blir ikke den gamle versjonen overskrevet, men kan hentes ut igjen i tilfelle man forandret noe feil. For å sammenligne en lokal fil med den i repository'et kan man skrive
tiger:~/javaprosjekt$ cvs status en_fil.java
===================================================================
File: en_fil.java Status: Locally Modified
Working revision: 1.1.1.1 Tue Jan 28 19:30:38 2003
Repository revision: 1.1.1.1 /home/homej/gr/grip/cvs/javaprosjekt/en_fil.java,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Man kan da se om versjonen man jobber med er oppdatert, eller om den er eldre eller forandret i forhold til den i repository'et. I status-feltet ovenfor kan man se at denne filen har blitt endret i forhold til versjonen i repository'et. Dersom man ønsker å oppdatere sin lokale kopi kan man skrive
tiger:~/javaprosjekt$ cvs update en_fil.java
M en_fil.java
For å legge til en ny fil man har opprettet, må man skrive to kommandoer:
tiger:~/javaprosjekt$ cvs add enda_en_fil.java
cvs add: scheduling file `enda_en_fil.java' for addition
cvs add: use 'cvs commit' to add this file permanently
tiger:~/javaprosjekt$ cvs commit -m "En ny fil" enda_en_fil.java
RCS file: /home/homej/gr/grip/cvs/javaprosjekt/enda_en_fil.java,v
done
Checking in enda_en_fil.java;
/home/homej/gr/grip/cvs/javaprosjekt/enda_en_fil.java,v -- enda_en_fil.java
initial revision: 1.1
done
Man kan fjerne en fil fra repository'et ved å skrive
tiger:~/javaprosjekt$ cvs remove enda_en_fil.java
cvs remove: scheduling `enda_en_fil.java' for removal
cvs remove: use 'cvs commit' to remove this file permanently
tiger:~/javaprosjekt$ cvs commit -m "En ny fil" enda_en_fil.java
Removing enda_en_fil.java;
/home/homej/gr/grip/cvs/javaprosjekt/enda_en_fil.java,v -- enda_en_fil.java
new revision: delete; previous revision: 1.1
done
Se på loggen for filene
For en mer detaljert oversikt over hva som har skjedd med en fil kan man skrive
tiger:~/javaprosjekt$ cvs log testfil.java
RCS file: /home/homej/gr/grip/cvs/javaprosjekt/testfil.java,v
Working file: testfil.java
head: 1.2
branch:
locks: strict
access list:
symbolic names:
start: 1.1.1.1
eksempel: 1.1.1
keyword substitution: kv
total revisions: 3; selected revisions: 3
description:
----------------------------
revision 1.2
date: 2003/01/28 19:45:54; author: grip; state: Exp; lines: +1 -1
Laget en ny utskriftsmetode
----------------------------
revision 1.1
date: 2003/01/28 19:45:20; author: grip; state: Exp;
branches: 1.1.1;
Initial revision
----------------------------
revision 1.1.1.1
date: 2003/01/28 19:45:20; author: grip; state: Exp; lines: +0 -0
Et java-prosjekt
=============================================================================
CVS i samarbeidsprosjekt
Dersom man benytter CVS i et samarbeidprosjekt, jobber alle på hver sin lokale kopi av prosjektet, men opp mot det samme CVS-repository'et. Da må alle de involverte ha riktig tilgang til dette. Dersom man har et felles område som kan benyttes til formålet, vil det være naturlig å opprette CVS-roten her. Hvis man for eksempel har fått tildelt området /home/prosjekt/sif8005/sif8005_204, vil man bytte ut kommandoene under avsnittet Gjøre klart for bruk av CVS med
tiger:~$ cd /home/prosjekt/sif8005/sif8005_204
tiger:/home/prosjekt/sif8005/sif8005_204$ mkdir cvs
tiger:/home/prosjekt/sif8005/sif8005_204$ export CVSROOT=/home/prosjekt/sif8005/sif8005_204/cvs
tiger:/home/prosjekt/sif8005/sif8005_204$ cvs init
Merk at ved å sette miljøvariablen først, kan man kutte ut det ekstra argumentet til cvs init. Merk også at alle de involverte må sette denne miljøvariablen før de foretar utsjekkingen av sin lokale kopi (se avsnittet Jobbe med prosjektet).
Man må også sørge for å sette rettighetene på CVS-repository'et slik at alle de involverte har tilgang. Dersom det finnes en bestemt gruppe for prosjektet, for eksempel prog204, må man sette rettighetene slik at repository'et for prosjektet eies av denne gruppa, og at gruppa har riktige rettigheter. Når prosjektet er opprettet (vi antar igjen at det har navnet javaprosjekt), vil følgende kommandoer sørge for det:
tiger:/home/prosjekt/sif8005/sif8005_204$ cd cvs
tiger:/home/prosjekt/sif8005/sif8005_204/cvs$ chgrp -R prog204 javaprosjekt
tiger:/home/prosjekt/sif8005/sif8005_204/cvs$ chmod -R g+r javaprosjekt
tiger:/home/prosjekt/sif8005/sif8005_204/cvs$ find javaprosjekt -depth -type d -exec chmod g+wx {} \;
Det som skjer her er at filene får gruppetilhørighet til prog204. Deretter får gruppen leserettigheter på alle filene og underkatalogene i repository'et, og til slutt får gruppen skriverettigheter på alle katalogene i repository'et. Når det gjelder skriverettighetene er det altså rettighetene på katalogen som er avgjørende, ikke på filene selv.
Andre ressurser
CVS har mange andre muligheter. For hjelp om bruken av en kommando, skriv cvs -H kommando, der kommando er en den kommandoen du vil ha hjelp om. For en mer detaljert oversikt over mulighetene i CVS kan man for eksempel ta en titt på http://www.nongnu.org/cvs/
| Languages: | Comments: | 0 | Aid: | 345 | User rating: |
|
|
| Last updated: | 2006-04-28 | Author: | kaihugoh | Read: | 6415 times |