Tfn Telephone 026-54 66 86 Kontr Checked. Revisionshistoria Revision history Rev Namn Name Datum Date Ändring Change



Relevanta dokument
CVS-Introduktion. CyberRymden Introduktion till CVS,17 november (27) Marcus Rejås

DRAFT. CVS kurs laboration 1 Checka in, ut och uppdatera. Marcus Rejås. 17 november 2002

Versionshantering. Problem som uppstår i större (samt även mindre) projekt:

Subversion. Laboration. Höstterminen 2008 r81. Ronny Kuylenstierna

Introduktion till git

Versionshantering med Git. Henrik Henriksson 17 april 2018

Konsolfönster i Windows Momentet ingår i kursen PDA DTR1206 Lab 1 DOS Konsolfönstret

Handbok Cervisia. Bernd Gehrmann Carlos Woelz Översättare: Stefan Asserhäll

1 Vad är Versionshantering? 2 Git. 2.1 GitHub

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

UNIX verktyg. Användbara kommandon Fil och informationssökning Tags Versionshanteringssystem

TDP005 Projekt: Objektorienterat system

Laboration 0. Enhetsbokstaven anges med ett kolon efter och man läser ofta ut detta, exempelvis C:(sekolon).

GitHub for Windows och GitShell

Kort-kort om utdelade användarkonton och datormiljön på NADA

Lathund för BankID säkerhetsprogram

Lab 7, 48 steg till ett bättre liv i Unix-labbet

Programmering i C++ Kompilering från kommandoraden

Börja med git och GitHub - Windows

NetBeans 5.5. Avsikt. Projektfönster

NetBeans 7. Avsikt. Projektfönster

XML+ANT+CVS+DIARY. XML: Exempel. XML: Syntax (1) Genomgång av några av de verktyg som används på kursen. <?xml version="1.0" encoding="iso "?

Tfn Telephone. Kontr Checked. Skapa PDF-filer i Windows

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Editering, Kompilering och Exekvering av Javaprogram

Versionshantering med Git

Instruktion för användande av Citrix MetaFrame

kommando -fl argument

Arbetsuppgift 1: På virtuell maskin med Ubuntuserver, skapa katalog och skapa Dockerfile. Skapa ny katalog i din hemmakatalog, med namnet webbserver.

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Har funnits nästan lika länge som datorerna. Manuell process, svarta tavlan Verktygsstöd kom tidigt redan i början på

Filsäkerhet i Windows NT (NTFS)

Lägga in filer i filarkivet

Kapitel 12. Mer om program Att rapportera buggar och problem make

Allmänt om programvaror och filer i Windows.

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Elements, säkerhetskopiering och dina bilder

Program. Kapitel make Program Interpreterande och kompilerande program

Introduktion till programmering, hösten 2011

Unix-miljöer i större sammanhang

Objektorienterad programmering i Java I

INSTALLATION AV VITEC MÄKLARSYSTEM

Installera SoS2000. Kapitel 2 Installation Innehåll

Emacs. Eric Elfving Institutionen för Datavetenskap (IDA)

Emacs. Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016

MS-DiskOperativSystem Sammanfattning och Övningar

Pragmatisk programmering. Cyberrymden Marcus Rejås Pragmatisk programmering,16 december (29)

FC-kurs Röbäcks skolområde, åk 5-6

UPPDATERA DIN UNICO-ORGELS OPERATIVSYSTEM!

Kort-kort om utdelade användarkonton och datormiljön på NADA

Filimport till Norstedts Byrå

Laborationer i kursmomentet Datoranvändning E1. Laboration nr 5: Mer om FrameMaker

7 Mamut Client Manager

OneDrive/SharePoint. Innehåll

Datorintroduktion 2009 Föreläsning 1. Dieter Larsen (IT-chef Matematiska vetenskaper)

Introduktion till Git

EVALD manual. Evald version

OBS! FÖRSÖK INTE INSTALLERA PROGRAMVARAN INNAN DU HAR LÄST DET HÄR DOKUMENTET.

Konvertering från Klients databas till Norstedts Byrå

TDP005. Föreläsning 2. Filip Strömbäck

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll

FC-kurs Röbäcks skolområde femmor och sexor

Tips och tricks. Några bra tips. Lägg till sökvägar

3. Hämta och infoga bilder

Pragmatisk programmering. Cyberrymden Marcus Rejås Pragmatisk programmering,19 september (26)

Laboration 2 Datorverktyg vid LiU

Sida 1 av 12. WSB Biodling. Manual V

Instruktioner för användning av Accessapplikationen till uppföljning av skyddsvärda arter kärlväxter samt AnnexIIkärlväxter

Datorintro för elektro på Solaris

ClearCase. Versionshantering

Innehåll. 7. Hur vet jag vilken storlek på licensen jag har?... 19

UNIX. 2D1339 Programkonstruktion Hösten 2001 Datorintroduktion Laboration 1. Mål. Vad laborationen går ut på. Redovisning

Årsskiftesrutiner i HogiaLön Plus SQL

Detta dokument skall ge en kortfattad introduktion till Jasmine installationen vid DSV.

Kort om World Wide Web (webben)

IDA kursmaterial Informationsblad make. make

Föreläsning 3. Programmering, C och programmeringsmiljö

Versionshantering. Jan Erik Moström

Dokumentnamn/Document Name: Installation Blankett.doc

ANVÄNDARMANUAL, INTERAXO

Storegate Pro Backup. Innehåll

Installation, Novaschem 2005

DL SOFTWARE Uumajankatu 2 Umeågatan FIN VAASA/VASA FINLAND +358-(0) Fax +358-(0)

Installationsguide fo r CRM-certifikat

Datorer och datoranvändning Föreläsningar 2014/15. Föreläsning 1 Unix. Operativsystem. Unix

Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING

1. Säkerhetskopiera den eller de byråer du har arbetat med via i Visma Klient.

Mobiltid 3L Pro Mobiltid. Copyright VITEC FASTIGHETSSYSTEM AB Sida 1 av 23

Vad är molnet? Vad är NAV i molnet? Vem passar NAV i molnet för? Fördelar med NAV i molnet Kom igång snabbt...

Mjukvara Konsolfönstret i Windows och lite andra saker. Momentet ingår i kursen PDA DTR1206

FIRSTCLASS. Innehåll:

Manuell installation av SQL Server 2008 R2 Express för SSF Timing

DATORINTRODUKTION 2010 LABORATION 1

Lathund till First Class

LOTTA MANUAL. t.o.m. version Cederlund

Guido van Robot och olika UNIX-kommandon

Version X6 Fler tips

Kapitel 4 Arkivmenyn Innehåll

Release. Konfigurations & Versionshantering samt Subversion. Konfigurations vs Versionshantering. CI -definition. Henrik Bergström

Omkoppling av in- och utmatning. In- och utmatning i Unix. Kommando exempel, ls, pipe forts. Kommando exempel, ls, pipe

Transkript:

Utilator 1(20) isionshistoria ision history Namn Name Ändring Change A3 2001-10-24 Ändrade i stycket om CVSROOT. Vi använder ssh nu och inte pserver. 2000-08-30 Ändrade i stycket om CVSROOT. Jag hade felaktigt på ett par ställen lagt till ett snedstreck för mycket. A1 2000-08-03 Första riktiga versionen. Alla andra är obsoleta Forfarande rått. Kommentarer välkomna. PA3 2000-07-21 Lade till avsnitt om förgreningar (branches). P 2000-08-03 Andra publika utkast. Forfarande rått. Kommentarer välkomna. PA1 2000-07-15 Började skriva detta dokument

Innehåll 2(20) 1 CVS 4 1.1 Vad är versionshantering?........................ 4 1.2 Vad är CVS?.............................. 4 1.3 Olika typer av versioner......................... 5 2 Arbetssätt 5 3 Installera CVS-klient 6 3.1 I Linux eller Unix............................ 6 3.2 I Windows och dess vänner....................... 6 3.3 Frontends................................ 6 3.4 Klockan!!!................................ 7 4 Sätt upp din miljö 7 4.1 Om du kör lokalt............................ 7 4.2 Om du kör på gorilla.......................... 8 5 Jobba med CVS 8 5.1 Sök hjälp................................ 8 5.1.1 Läs manualsidan........................ 8 5.1.2 Be CVS om hjälp........................ 9 5.2 Hämta din arbetskopia (checkout)................... 9 5.3 Publicera dina ändringar (commit)................... 10 5.4 Uppdatera din arbetskopia (update)................... 10 5.5 Skapa nya kataloger och filer i trädet (add)............... 10 5.6 Ta bort kataloger och filer i trädet (remove).............. 11 5.7 Byta namn på filer och kataloger.................... 11 5.8 Släpp din arbetskopia (release)..................... 12

3(20) 5.9 Skapa ett nytt projekt.......................... 12 5.10 Moduler................................. 13 5.11 Studera en modul eller fils historia................... 14 5.11.1 Jämföra filer.......................... 14 5.11.2 Läsa loggar........................... 14 5.12 Taggar (rtag, tag)............................ 14 5.13 Förgreningar (Branches)........................ 14 5.14 Mer om revisionsnummer........................ 14 5.15 Arbeta med flera repositorys...................... 16 6 Policies 16 6.1 Rekomendationer............................ 17 6.2 Vad skall vara under CVS........................ 17 A CVS-kommandon (lathund) 18 B Referenser 19 C ToDo 20

1 CVS 4(20) I detta kapitel behandlas kort vad CVS är och vad det skall vara bra för. Detta kan hoppas över. För den riktigt otålige finns en lathund i appendix A på sidan 18 1.1 Vad är versionshantering? Versionshantering är en metod att hålla reda på olika versioner av projekt man utvecklar. Man skapar en historik för varje källkodsfil. Då man skriver ett program kan det hända att buggar smyger sig in under utvecklingen. Den enklaste typen av versionshantering är att med jämna mellanrum spara undan alla versioner av filerna. På så sätt kan man sedan gå tillbaka och följa utvecklingen. Detta sätt fungerar om man är ensam om att ändra filerna och har obegränsat med diskutrymme. Men det innebär också en hel del problem. Antag att du vill spara undan koden varje gång du gjort en större ändring. Då utvecklingen pågått en tid har du sparat undan ett stort antal gånger. Varje gång du sparar undan koden sparas en hel kopia av den. Det kostar mycket diskutrymme. Versionshantering underlättar för programmerare att gå tillbaka till en äldre version. Ett versionshanteringssystem kan också på ett lätt sätt visa vad som ändrats mellan versionerna. 1.2 Vad är CVS? CVS är ett versionshanteringssystem. CVS är en frontend till versionshanteringssystemet RCS. CVS tillför många finesser som tidigare saknats i RCS. Detta är den kort-kort-kort varianten av en handledning till hur det fungerar. Vill du veta mer (det vill du) så finns det en pärm hos mig med information. Mer kommer... CVS är ett modernt fritt versionshanteringssystem. Det används av flera stora mjukvaruutvecklare 1. CVS sparar alla versioner av en fil i en enda textfil. Detta sparar utrymme. För varje ändring läggs bara information om vad som ändrats till i filen. Detta gör att systemet kan återskapa alla versioner av filen. CVS har också stöd för parallellutveckling. Det vill säga det har lösningar på de problem som uppstår då flera utvecklare vill jobba med samma projekt. 1 The Apache HTTP server ptoject och Netscape Communicator t.ex.

1.3 Olika typer av versioner 5(20) I föregående stycke sades att CVS är ett versionshanteringssystem. Det vill säga ett system som sköter versionshantering. Detta stycke ägnas åt vad en version är. En fil kan flera olika versioner. Då man utvecklar mjukvara uppdaterar man ofta sina källkodsfiler. Varje uppdatering som man kan vilja gå tillbaka till eller som man vill dela med sina utvecklarkollegor ges ett nytt versionsnummer. CVS börjar med version 1.1 av alla filer. Detta ökar sedan för varje uppdatering. Denna typ av version kallas för revision. Då man kommit så långt med utvecklingen att man har fått något användbart. Brukar man släppa mjukvaran (blanda inte ihop detta med CVS-kommandot release som är något helt annat). Mjukvaran ges då ett versionsnummer. Denna version brukar kallas release. Observera att releasenumret avser hela källkodsträdet medan varje enskild fil har ett revisionsnummer. 2 Arbetssätt När man jobbar med CVS använder man följande arbetssätt. Alla filer ligger lagrade på ett centralt ställe 2 där alla utvecklare kan nå dem. Observera att man aldrig jobbar direkt med repositoryt utan alltid använder sin CVS-klient till detta. Om du gör något direkt i CVS-trädet kan CVS naturligtvis inte garantera att inget försvinner. De filer du vill jobba med tar du ner till din arbetsplats och jobbar med dem lokalt. Att ta ner källkod kallas checkout. Då du ändrat en fil och vill göra din ändring tillgänglig i den centrala källkoden gör du en commit av din ändrade fil. Du får då skriva i filens logg och beskriva dina ändringar. Då du ändrat klart i din arbetskopia skall du släppa den (lämna tillbaka). Det gör man med ett kommando release. Detta kan vara bra att ha i åtanke då man läser resten av dokumentet. 2 Detta centrala ställe kallas CVS-repositoryt på svengelska. Eller bara repositoryt om det är underförstått att det är CVS som avses

3 Installera CVS-klient 6(20) För att kunna använda CVS måste du ha en CVS-klient installerad på din maskin. Hur och vad du skall installera beror på din miljö. Här beskriver jag Windows och Unix/Linux. 3.1 I Linux eller Unix CVS-klient finns förmodligen redan installerad. Du kan kolla detta med kommandot cvs -v pc118:~$ cvs -v Concurrent Versions System (CVS) 1.10.6 (client/server) Finns ingen CVS-klient installerad och du inte vet hur man installerar den kan du kontakta så får du hjälp. 3.2 I Windows och dess vänner I Windows finns förmodligen inte någon CVS-klient installerad. Du kan då installera WinCVS som är en grafisk CVS-klient. WinCVS hittar du på http://www.wincvs.org. Gillar du att jobba med ett textbaserat verktyg kan du istället titta på http://www.cvshome.org. Där finns CVS-klienter till flera olika plattformer. För att följa med i denna manual är det lättast att arbeta med en textbaserad klient. Du kan gå över till en grafisk senare då du vet hur det fungerar. Att installera dessa borde inte vålla några problem. Läs och följ instruktionerna som följer med. 3.3 Frontends Det finns frontends till detta system om man inte gillar att skriva kommandon. Själv använder jag Emacs (finns till Windows med). Till Windows finns det en som också en som heter WinCVS (se ovan). Jag vet inte om den är bra eller inte eftersom jag inte har testat den.

3.4 Klockan!!! 7(20) CVS fungerar bäst om alla klockor går lika! Se därför till att synkronisera din klocka mot gorilla. Gör detta inte bara nu utan se till att det görs en gång per dygn. Synkronisera mot gorilla och inte någon tidsserver som till exempel timer.sunet.se. Gorilla synkroniseras varje natt. Vet du inte hur du får din klocka att synkroniseras varje natt så fråga någon. 4 Sätt upp din miljö Jag rekommenderar att du kör CVS och editerar dina filer lokalt på din maskin. Kan du inte göra det (för att du till exempel måste använda Unix vid editeringen) går det bra att köra det från gorilla 3. Är detta fallet så kan du hoppa över nästa stycke. Det finns inget som hindrar att du använder CVS både lokalt och då du kör på gorilla (tvärt om... ). 4.1 Om du kör lokalt För att kunna använda CVS lokalt måste du först göra följande: Sätta omgivningsvariabeln CVSROOT till user@gorilla:/utilator/cvsroot Byt ut user mot ditt användarnamn på gorilla 4. Observera att det inte skall vara något snedstreck (/) i slutet på CVSROOT. I bash görs detta med kommandot: export CVSROOT=user@gorilla:/utilator/cvsroot Hur du gör i DOS och dess vänner är jag inte helt säker på 5 men set CVSROOT=user@gorilla:/utilator/cvsroot eller motsvarande bör vara åt rätt håll. Kör du bash lägger du det i $HOME/.bashrc eller $HOME/.profile och i DOS i C:\AUTOEXEC.BAT. Kör du något annat skal och inte vet så fråga mig (Marcus) så fixar vi det. Jag rekommenderar att du kör CYGWIN i Windows. Där finns både ssh och CVS enkelt att installera och fungerar direkt. 3 Gorilla är utvecklingsdatorn på Utilator 4 Du skall ha ett användarnamn på gorilla. Har du det inte eller inte vet vad det är så kontakta Marcus eller Joel 5 Ni som provat kan väl skicka success-stories till Marcus

8(20) Sedan behöver du tala om för CVS hur det skall logga in på den maskin som har cvsrepositoryt. På Utilator använder vi ssh. export CVS_RSH=ssh Denna variabel sätts på samma sätt som ovan. 4.2 Om du kör på gorilla Gorilla heter utvecklingsdatorn på Utilator. På den finns repositoryt där alla källkoder ligger. Kör ALDRIG som root på gorilla (även om du har lösenordet)!!! Om du vill köra i Unix-miljö men har Windows eller motsvarande på din dator kan du utveckla dina alster på gorilla. Kör du på gorilla är det lite enklare att sätta upp din miljö. På gorilla behöver du nämligen inte göra något. Det skall fungera på en gång. Du kan alltså direkt börja köra cvs-kommandon. Får du Permission denied eller liknande så tala med mig (Marcus) så fixar vi det. 5 Jobba med CVS I denna section beskrivs hur du till vardags jobbar med CVS. Med CVS-kommandon menas kommandon som anges som argument till cvs-klienten. Till exempel så anges CVS-kommandot log som cvs log vid prompten. Det är alltså underförstått att detta kommando skall ges då det i denna text sägs CVS-kommandot log. Alla kommandon utom checkout och release görs i den aktuella modulens root. De två undantagen skall göras i katalogen ovanför. 5.1 Sök hjälp Kom ihåg att den som aldrig frågar får aldrig veta och att du när det gäller datorer och mjukvara nästan aldrig står ensam... 5.1.1 Läs manualsidan Ett snabbt sätt att lära sig saker är att läsa manualsidor. Detta gör man på en Unixmaskin med kommandot man program. Vill du lära dig CVS är alltså man cvs en

bra start. 5.1.2 Be CVS om hjälp 9(20) CVS-klienten har en utmärkt hjälp. Du kommer åt den genom att ge kommandot cvs --help. Då erhålls en lista över den hjälp som finns. Genom att läsa den och fråga sig vidare kan man lära sig en hel del smidigheter. Dessa smidigheter behandlas inte i denna text så utforska den hjälp systemet ger dig. 5.2 Hämta din arbetskopia (checkout) Eftersom all utveckling sker utanför det centrala CVS-trädet måste en arbetskopia av de filer som skall bearbetas hämtas till den plats där utvecklingen sker. Utvecklingen sker vanligtvis på en arbetsstation eller PC. Börja med att göra en lämplig katalog aktiv. De filer som hämtas hamnar i underkataloger till nuvarande katalog. För att få reda på vilken katalog som är aktuell kan kommandot pwd användas om du kör på en Unixmaskin (Det är smart att ändra sin prompt så att den visar aktuell katalog). Det är klokt att ha ett ställe i sin hemmakatalog dit man alltid hämtar arbetskopior av källkod (Min heter $HOME/work/). Denna katalog bör alltid vara tom när man inte jobbar på ett projekt. När lämplig katalog är aktiv kan en modul 6 hämtas. Detta görs med CVS commandot checkout vilket kan förkortas till co. Alltså: cd till lämpligt bibliotek där filerna ska ligga cvs checkout modul Du kan prova att checka ut modulen cvstest som är en modul upplagt i repositoryt just för att testa och laborera med CVS. Alltså cvs checkout cvstest för att hämta cvstest. I stället för checkout kan co skrivas enligt ovan. Nu kan du ändra i filerna hur du vill. 6 En klump sammanhängande filer, till exempel ett program, kallas i CVS för en modul.

5.3 Publicera dina ändringar (commit) 10(20) Då du anser att en fil är redo att läggas tillbaka till repositoryt skall du göra en commit 7 Då en fil ändrats skall den läggas till 8 i det centrala repositoryt. Detta görs med kommandot cvs commit Detta kollar igenom aktuell katalog och kollar om någon fil ändrats. Om så är fallet startas en editor 9. I editorn skriver du in vad som ändrats i aktuell fil. Läs filen som öppnas i editorn så ser du vilken fil som den gäller. Skriv en bra förklaring på vad du ändrat i filen. Detaljer behöver inte beskrivas eftersom de går att spåra i alla fall. En vanlig praxis (som vi bör följa) är att bara commita filer som kompilerar och går att köra. På så sätt är man säker på att alla programmerare kan provköra sina ändringar. 5.4 Uppdatera din arbetskopia (update) Då du jobbar med en kopia kan det hända att repositoryt ändras. Du kan ibland vilja hämta de senaste filerna från repositoryt. Det gör du med följande kommando: cvs update Nu uppdateras alla filer i arbetskopian. Filerna som uppdaterats markeras med ett U. Om du ändrat i en fil och den filen också är ändrad, av någon annan, i repositoryt varnas du genom att filen markeras med ett C. I filen (som du editera för att kunna committa) finns nu information om din version och den som hämtats ur repositoryt. Vill du se hur din variant såg ut innan uppdateringen så finns den lagrad som.#filnamn.version i samma katalog. Om du känner att du bara sabbat en fil kan du radera den och köra en update. Då kommer CVS att varna dig om att filen saknas och kopiera den senaste versionen från repositoryt. 5.5 Skapa nya kataloger och filer i trädet (add) Att skapa nya filer i katalogträdet kan tyckas vara onödigt krångligt till en början. Till det finns naturligtvis en bra förklaring. Om det skulle vara så att alla skapade filer lades till i repositoryt så skulle alla objektfiler och binärer läggas till om du körde en 7 Se avsnitt 6, sidan 16 om när någor skall commitas. 8 Kallas commita på klingande svengelska 9 Den editor som startas är den som anges i miljövariabeln $EDITOR. Är den inte satt startas vi(m)

11(20) commit och glömt att ta bort dessa (ex. make clean). Så kan det naturligtvis inte vara. Istället gör man så här: Skapa den fil eller katalog du vill lägga till. Kör sedan kommandot: cvs add filnamn som lägger till filen i CVS. Nu finns filerna inlagda i din arbetskopia. För att de skall läggas till i repositoryt måste du köra cvs commit Filen finns inte tillgänglig för andra programmerare förrän du gjort en commit. Observera att add till skillnad från de flesta andra cvs-kommandon inte fungerar rekursivt. Du kan inte ens göra cvs add foo/bar utan måste göra cd foo cvs add bar 5.6 Ta bort kataloger och filer i trädet (remove) Att ta bort filer från filträdet följer en metod som liknar den då filer läggs till. Först tas filen eller katalogen bort. Sedan körs kommandot cvs remove filnamn istället för remove kan förkortningen rm användas. På samma sätt som då filer läggs till måste man köra en commit för att filen skall tas bort ur repositoryt. Att filen tas bort är en sanning med modifikation. Filen tas inte bort ur modulen utan flyttas till en katalog som heter Attic. Detta för att den skall kunna återskapas om någon vill ha en äldre version av modulen. 5.7 Byta namn på filer och kataloger Det finns inget kommando för att byta namn på filer och kataloger. Du måste göre detta som en kombination av remove och add.

5.8 Släpp din arbetskopia (release) 12(20) Då du har editerat färdigt skall du releasa modulen. Detta för att CVS skall veta att du inte ändrar i den längre. För att releasa modulen gör du så här. Gör först katalogen du hade vid checkout till aktiv (alltså den ovanför modulens rot). Kör sedan kommandot cvs release modul. Nu skall du radera katalogen. Detta för att du inte skall ändra i den och glömma bort att den ligger under CVS. Vill du att CVS skall radera den automatiskt anger du kommandot cvs release -d cvstest Varning. Ovanstående kommando tar bort katalogen. Det finns sedan inget sätt att ta tillbaka den. Som tur är så frågar CVS om du vill fortsätta. Läs meddelandet som du får noga! Filer med? framför är filer som du lagt till men inte kört add på. Dessa filer kommer att försvinna (vilket oftast är vad du vill). Filer med M framför är filer som du ändrat men inte gjort commit på. Dessa vill man som regel göra commit på så denna varning är allvarligare. 5.9 Skapa ett nytt projekt Att lägga upp nya projekt är det som kan vara lite besvärligare än om man inte använder CVS. Man får först skapa katalogstrukturen på sin dator. Därefter importera den till CVS-trädet. Att flytta och byta namn på filer är krångligare när man använder CVS än annars. Tänk därför efter noga innan du skapar ett nytt projekt så att katalogstrukturen fungerar för hela projektet. Skapa först katalogstrukturen. Gör sedan den nyskapade katalogstrukturens rot till aktuell katalog. Kör sedan cvs import projektnamn dittnamn start Där projektnamn är namnet på projektet (modulen) och dittnamn är just ditt namn. Namnet på modulen är det namn som du skriver efter checkout då du hämtar projektet från CVS-trädet. En modul kan ha namn som rejas/kalle. Denna modul heter kalle och ligger i katalogen rejas i CVS-trädet. Detta är bra för att hålla ihop delar av ett stort projekt i en katalog. Vill du checka ut alla kataloger i till exempel rejas ovan så gör du det med kommandot cvs co rejas. Då du kör cvs-kommandot import startas din editor. I loggen räcker det gott att du skriver importerade filstrukturen eller något sådant. Importerar du ett äldre projekt

kan du beskriva lite mer. 13(20) Efter att du skapat ett projekt i CVS bör du skapa en modul för projektet. Detta är inte ett krav men är i många fall väldigt lämpligt. Hur detta gå till beskrivs i avsnitt 5.10 på sidan13. 5.10 Moduler Så här långt i detta dokument har vi sagt moduler om projekt. Detta är inte riktigt sant eftersom projekten hittills har bestått av bara en katalog. Man kan om man vill slå ihop flera kataloger till en modul. Inte sällan är en modul ett projekt eller en mjukvara. Alla moduler definieras i filen modules. Denna fil är som alla andra i CVS under CVS kontroll. För att editera modules-filen måste du först checka ut den. Filen ligger i katalogen CVSROOT i repositoryt. För att checka ut den ger du således kommandot cvs co CVSROOT/modules Sedan fungerar den som alla andra filer under CVS. Filen har kortfattat följande syntax 10. Alla kataloger bör läggas upp som moduler. För att lägga upp katalogen testkatalog som modul test läggs följande rad till i modules test testkatalog Ligger testkatalog i katalogen rejas så blir raden test rejas/testkatalog Ofta vill man att filer från olika moduler skall vara med i en modul. Då gör man som så att man skapar alla moduler var för sig. Sedan skapar men en modul som innehåller alla de andra modulerna. Då använder man följande syntax modul &test &common Där alla namn efter & är modulnamn. I filen finns redan moduler deklarerade så man kan få mycket hjälp i den. 10 Detta är det mest grundläggande, läs dokumenten i bilaga B för mer information

5.11 Studera en modul eller fils historia 14(20) En av fördelarna med CVS är att man hela tiden har tillgång till varje fils historik. Man kan dessutom jämföra den fil man editerar med alla tidigare versioner av filen. Detta är mycket bra om man implementerat en bug man inte hittar. Det kan även vara intressant att studera filers loggar för att se hur utvecklingen fortskridit. 5.11.1 Jämföra filer För att jämföra en fil man editerar med en annan version av samma fil använder man cvs-kommandot diff. cvs diff filnamn 5.11.2 Läsa loggar Att läsa loggar kan vara bra för att se hur en fil har kommit till det stadium den är nu. Man kan även se vem som gjort vad och så vidare. I figur 1 visas en dump av programmet cvs2html. Cvs2html är egentligen ett skript som genererar html-sidor av utdatat från cvs log. Det är användbart framför allt på större projekt. 5.12 Taggar (rtag, tag) Kommer... 5.13 Förgreningar (Branches) Kommer inom kort... Inte aktuellt ännu. Figur 2 visar ett versionsträd med branches. 5.14 Mer om revisionsnummer Då du kommit så här långt i denna manual vet du säkert att varje fils revisionsnummer lever ett eget liv och inte har något att göra med releasenummer av mjukvarupaket. Som regel behöver man aldrig bry sig om revisionsnummer på filer. De fungerar bra som de är. Det finns dock tillfällen då det kan vara bra att manipulera dessa nummer.

Figur 1: cvs2html 15(20) Cvs2html är ett Perlskript som genererar en websida som visar en moduls historik. I detta kan man på ett enkelt och överskådligt sätt läsa alla loggar i en modul.

1.1 1.2 1.3 1.4 16(20) 1.2.2.1 1.2.2.2 1.2.2.3 1.2.4.1 1.2.4.2 Figur 2: Förgreningar (Branches) 1.2.2.3.2.1 Branches är användbara för att modifiera en fil för att visst ändamål. Antag att revision 1.2 av filen i figuren tillhör release 1.0 av programvaran. För att skapa buggfixar till programvaran skapas brancherna 1.2.2.1 och 1.2.4.1. Utvecklingen mot release 1.1 eller 2.0 av mjukvaran fortsätter med revision 1.3 och framåt av filen. Ett exempel är då en release av mjukvaran görs. Då kan det vara bra att sätta alla filer till denna release till ett nytt major 11 revisionsnummer. Man kan av naturliga själ aldrig minska ett revisionsnummer. Mer kommer... 5.15 Arbeta med flera repositorys Kommer inom kort... Inte aktuellt ännu inom Utilator. 6 Policies För att flera skall kunna arbeta med filerna i CVS-trädet måste vissa gemensamma regler följas. Dessa behandlas nedan. 11 Med major menas att siffran före punkten ökas. Till exempel så kan revision 1.123 bli 2.0

6.1 Rekomendationer 17(20) Lägg dina ändringar till trädet (committa) då du gjort ändringar och skriv bra förklaringar till vad du ändrat i loggen. Alltså inte bara ändrat lite här och där. Att checka ut koden på måndag och ha den till fredag och då committa är förkastligt. Du har inte en chans att beskriva allt du ändrat. Commita bara kod som kan kompileras. Annars blir det svårt för andra utvecklare att ta ned källkodsträdet och börja jobba på det. CVS-loggarna kan skrivas på Svenska eftersom de bara är till för oss. Däremot skall all källkod kommenteras på engelska. 6.2 Vad skall vara under CVS En befogad fråga är att undra vad som skall vara under CVS-kontroll. En riktlinje bör vara att allt som kan komma att återanvändas och/eller uppdateras skall vara under CVS. Exempel är naturligtvis källkod men även dokumentation och web-sidor kan läggas under CVS. I ett projekt under CVS-kontroll skall inte binärer vara med. En binär är ju meningslös om du inte sitter på samma plattform som binären skapades på. Däremot skall all källkod som behövs för att skapa binärer och information om hur detta går till (till exempel README, INSTALL och Makefile) finnas med. Vanliga delade bibliotek (shared libraries) skall inte heller vara med.

A CVS-kommandon (lathund) 18(20) Detta avsnitt innehåller en kort referens för den otålige. Vill du testa på en gång utan att förstöra något ger du kommandot cvs co cvstest för att hämta modulen testcvs. Denna modul är skapad just för att laborera med CVS. Alla kommandon skall köras i den katalog som innehåller din arbetskopia. Om du gjorde cvs co kalle skall du ha kalle som aktuell katalog. Undantaget är release som skall köras från katalogen ovanför (alltså den som var aktuell då du körde cvs co kalle) och naturligtvis även co eller checkout. Om du vill: Hämta en arbetskopia använder du cvs checkout modul (eller cvs co modul) som hämtar en kopia av filerna som hör till modul och lägger dem i katalogen modul. Katalogen skapas av CVS. Uppdatera din arbetskopia använder du kommandot cvs update som uppdaterar din arbetskopia med det senaste från repositoryt. Lägga dina ändringar till repositoryt kör du cvs commit som lägger dina ändringar till repositoryt. Din editor startas och du uppmanas att skriva en kommentar om vad du gjort. Lägga till och ta bort filer använder du kommandot cvs add filnamn och cvs remove filnamn vilka anger att filen skall tas läggas till respektive tas bort. Du måste göra en commit för att andringar skall utföras. Släppa din arbetskopia kör du cvs release modul som släpper din modul och kontrollerar med repositoryt om du glömt att committa någon ändring. Du skall ha katalogen i vilken katalogen modul ligger som aktuell katalog. Efter att du kört release skall du radera katalogen för att förhindra att du av misstag ändrar i den. Detta kan CVS göra automatisk om du anger flaggan -d (cvs release -d modul). Studera loggen för en eller flera filer använder du cvs log filnamn som visar meddelanden angivna vid commit för en eller flera filer. Studera skillnaden mellan en fil och dess motsvarighet i repositoryt använder du cvs diff filnamn vilket visar skillnaden mellan den fil du har i arbetskopian och den senaste i repositoryt. Studera historiken för repositoryt använder du kommandot cvs history. Det finns flera flaggor till detta kommando, se Utilator CVS-manual för mer information.

B Referenser 19(20) I detta dokument finns inga riktiga referenser. Har finns dock länkar till de dokument som använts. http://www.gnu.org/manual/cvs-1.9/cvs.html GNUs manual till CVS. Mycket bra! http://www.cvshome.org Officiell hemsida för CVS. Finns en hel del intressant att läsa här. Bland annat en bra Quick Reference. http://www.loria.fr/~molli/cvs/cvs-tut/cvs_tutorial.html En relativt kort och bra CVS-tutorial.

C ToDo Skriva klart och snygga upp Fixa till referenser 20(20)