CVS kurs laboration 1 Checka in, ut och uppdatera Marcus Rejås 17 november 2002
Innehåll 1 Inledning 1 2 Förberedelser (om du skall köra CVS på en remote server) 1 2.1 Installera CYGWIN...................................... 1 2.2 Ordna så att du kan logga in utan lösenord (med nycklar).................. 2 2.3 Verifiera att allt fungerar................................... 2 3 Ett kort arbetspass 2 3.1 Checka ut modulen cvstest.................................. 2 3.2 Editera koden......................................... 3 3.3 Uppdatera modulen...................................... 3 3.4 Checka in modulen (Commit)................................ 3 3.5 Släppa koden (release).................................... 4 1 Inledning I denna lab skall du öva de grundläggande operationerna i CVS. Lämpliga kapitel i Cederqvist är: 1.3, 2.1, 2.9, A1, 6 och de omkring dessa. 2 Förberedelser (om du skall köra CVS på en remote server) Finns inte cvsrepositoryt på den maskin du sitter så måste vissa konfigureringar göras för att du skall kunna komma åt repositoryt. Det vanligaste är att man kommer åt CVS via ssh. Det är denna metod som beskrivs här. Du måste naturligtvis också ha ett konto och rätt att använda CVS på servern. 2.1 Installera CYGWIN Denna, och efterföljande, labbar utgår från att du har en kommandorads baserad cvs klient. Har du bara tillgång till maskin med någon smak av Windows så kan du med fördel installera Cygwin. Då får du både CVS och ssh och en hel del andra trevligheter. Att installera Cygwin är enkelt. På http://sources.redhat.com/cygwin finns allt du behöver veta. 1
2.2 Ordna så att du kan logga in utan lösenord (med nycklar) Detta är egentligen inte nödvändigt. Men det underlättar avsevärt att slippa skriva lösenordet varje gång. Vissa grafiska CVS-klienter kräver att detta fungerar. Det som skall göras är att skapa ett nyckelpar till ssh. En hemlig och en publik. Den publika skall sedan läggas på servern och den hemliga kan användas istället för lösenord. Det som skall göras är följande: Generera nycklar ssh-keygen -t dsa skapar de nycklar du behöver. De sparas i katalogen.ssh i din hemmakatalog (du kommer till din hemmakatalog genom att ge kommandot cd). Flytta den publika nyckeln till servern Den publika nyckeln sparades i /.ssh/id_dsa.pub. Denna skall läggas till i filen /.ssh/authorized_keys2 på servern. Har du den skall denna nyckel läggas till i filen. Känner du inte till den filen har du den förmodligen inte. Då kan du helt enkelt kopiera filen till servern med följande kommando scp /.ssh/id_dsa.pub username@cvs.lab.rejas.net:.ssh/authorized_keys2 om du får ett felmeddelande att katalogen inte finns skapar du den med kommandot ssh -l user cvs.lab.rejas.net mkdir.ssh. 2.3 Verifiera att allt fungerar Kör kommandot ssh -l user cvs.lab.rejas.net cvs -v. Du skall då få en utskrift från cvsprogrammet på servern. OBS!! Nu är filen /.ssh/id_dsa allt som behövs för att komma in på ditt konto i labbet. Förvara den väl och använd den inte som nycket till flera system. 3 Ett kort arbetspass Okej! Nu skall allt vara klart att köra. Vi börjar med ett enkelt arbetspass. Oftast är det så här som CVS används. Man checkar ut, uppdaterar och commitar! Det kan vara bra att läsa avsnitten A1 och 6 i Cederqvist för att förstå hur cvs kommandot fungerar. 3.1 Checka ut modulen cvstest Innan du börjar att jobba måste du ha en arbetskopia. Då använder du cvs-kommandot checkout. Du kan, om du vill förkorta det till co. Det du checkar ut kommer att hamna i den katalog som är aktiv i en ny underkatalog med samma namn som modulen. För att checka ut modulen gör du en lämplig katalog till aktiv och checkar ut: mkdir cvslab cd cvslab cvs checkout cvstest CVS visar information om de filer som kopieras. 2
3.2 Editera koden Nu när du checkat ut din arbetskopia är det dags att editera koden. Starta din favoriteditor eller utvecklingsmiljö och sätt igång. Du kan editera precis som vanligt i din vanliga miljö. 3.3 Uppdatera modulen Nu när du ändrat koden så har säkert någon annan också gjort det. För att hämta andras andringar gör man en update av modulen. Då slås dina ändringar ihop med andras eventuella ändringar. Du skall ha den katalog som du vill updatera som aktuell och ge kommandot cvs update. Ta för vana att ofta göra update. På så sätt minimeras extraarbete vid eventuella konflikter. Om det blir konflikter för du en varning om detta. Den fil i vilken konflikten uppstod ändras i din arbetskopia. Denna måste du öppna i din editor och lösa konflikten. Kollisionen redovisas på följande sätt i din fil: <<<<<<< filens.namn Raden som du skrev den ======= Raden som någon annan skrev den >>>>>>> 1.6 1.6 är den revision som gäller i repositoryt. Din fil som den var då du körde update finns kvar oförändrad med namnet.#filens.namn.1.5. Där versionsnumret är den version du har checkat ut. Tycker du detta verkar krångligt så bör du tänka på att problemet detta löser inte är helt trivialt. Dessutom kan inga ändringar gå förlorade eftersom det alltid går att ta tillbaka alla versioner av en fil. 3.4 Checka in modulen (Commit) Nu när ändringar är gjorda och modulen är uppdaterad skall man göra sina ändringar tillgängliga för alla. Det gör man med kommandot cvs commit (kan förkortas cvs ci). Du presenteras då med din default editor. Nu kan du skriva ett logmeddelande som talar om vad du gjort. Som default i de flesta UNIX system är editorn vi. Vissa gillar den, andra gör det inte. Du kan välja vilken editor som skall startas med miljövariabeln $EDITOR. Får du upp vi och inte vet hur du gör så kan ku skriva :q! så avlutas vi utan att du skrivit något logmeddelande. Skriver du inget meddelande tror CVS att du vill avbryta den commit och frågar dig hur du vill göra. Gör du en commit i en katalog kommer alla filer i den katalogen som är ändrade att beraöras av commiten och få samma logmeddelande. Så fungerar de flesta kommandon i CVS. Det kan ofta vara bra at bara commita några filer i taget som berör samma ändring. Du kan då ange kommandot cvs commit fil1 fil2 fil3 du kommer då att commita filerna du anger samt skriva ett loggmeddelande som gäller de filerna. Detta fungerar även om andra filer i katalogen är uppdaterade. Vill du fortsätta att jobba med koden går du tillbaka till 3.2. Gör detta tills du känner dig konfortabel med de komandon som används. 3
3.5 Släppa koden (release) Som du vet vid det här laget så låser man inte kod i CVS. Det är dock möjligt att göra det. Därför bör man alltid ha för vana att släppa koden då man inte planerar att jobba med den på ett tag. Skall man inte jobba med den på ett längre tag eller lämna sin burk obevakad skall man även radera sin arbetskopia. Detta kan cvs göra automatiskt om man ger kommandot release med argumentet -d. Om man inte raderat koden och skall börja jobba med den efter en tid skall man alltid göra en update innan man börjar. Annars finns risken att man börjar jobba på en arbetskopia som är väldigt gammal. Det ställer till problem då man senare skall commita sin kod. 4