www.ntnu.no *
INFOWEB >  programmer >  generelt  > CVS - kommandolinjeverktøyet
Verktøy
Du kan legge til kommentarer
Eller sende denne artikkelen
Les artikler skrevet av kaihugoh
Brukervurdering
Hvor mye hjelp var det i denne artikkelen?
Mye Noe Lite
Forhåndsvisning
Du trenger ikke en 'utskriftsvennlig side' for å skrive ut denne siden. Forklaring
Innhold

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:

konsoll #1
    tiger:~$ mkdir cvs
  

Man kan så opprette CVS-roten i denne katalogen med kommandoen

konsoll #2
    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

konsoll #3
    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:

konsoll #4
    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

konsoll #5
    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

konsoll #6
    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

konsoll #7
    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

konsoll #8
    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:

konsoll #9
    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

konsoll #10
    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

konsoll #11
    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

konsoll #12
    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:

konsoll #13
    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/


Språk: no flag_en Kommentarer: 0 Aid: 345 Brukervurdering:
 
 
Sist oppdatert: 2006-04-28 Forfatter: kaihugoh Lest: 6422 ganger