Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am...

30
Jennifer Vesperman Deutsche Übersetzung von Dorothea Heymann-Reder CVS Versionskontrolle und Quellcode-Management Deutsche Ausgabe

Transcript of Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am...

Page 1: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

Jennifer VespermanDeutsche Übersetzung von Dorothea Heymann-Reder

CVS

Versionskontrolle und Quellcode-Management Deutsche

Ausgabe

Page 2: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

369.book Seite ii Dienstag, 22. Mai 2007 9:06 09

Page 3: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

Beijing ·

Cambridge ·

Farnham ·

Köln ·

Paris ·

Sebastopol ·

Taipei ·

Tokyo

CVS

Jennifer Vesperman

Deutsche Übersetzung von Dorothea Heymann-Reder

369.book Seite iii Dienstag, 22. Mai 2007 9:06 09

Page 4: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und deren Folgen.Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind möglicherweise eingetragene Warenzeichen. Der Verlag richtet sich im wesentlichen nach den Schreibweisen der Hersteller. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung,Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Kommentare und Fragen können Sie gerne an uns richten:O’Reilly VerlagBalthasarstr. 8150670 KölnTel.: 0221/9731600Fax: 0221/9731608E-Mail: [email protected]

Copyright der deutschen Ausgabe:© 2004 by O’Reilly Verlag GmbH & Co. KG1. Auflage 2004

Die Originalausgabe erschien 2003 unter dem TitelEssential CVS im Verlag O’Reilly & Associates, Inc.

Die Darstellung von Steppen-Murmeltieren im Zusammenhang mit dem Thema CVS ist ein Warenzeichen von O’Reilly & Associates, Inc.

Bibliografische Information Der Deutschen BibliothekDie Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar.

Übersetzung und deutsche Bearbeitung: Dorothea Heymann-Reder, BornheimLektorat: Alexandra Follenius, KölnFachliche Unterstützung: Karl Heinz Marbaise, AachenKorrektorat: Sibylle Feldmann, DüsseldorfSatz: Tung Huynh, reemers publishing services gmbh, Krefeld; www.reemers.deUmschlaggestaltung: Ellie Volckhausen & Hanna Dyer, BostonProduktion: Karin Driesen, KölnBelichtung, Druck und buchbinderische Verarbeitung: Druckerei Kösel, Kempten; www.koeselbuch.de

ISBN 3-89721-369-9

Dieses Buch ist auf 100% chlorfrei gebleichtem Papier gedruckt.

369.book Seite iv Dienstag, 22. Mai 2007 9:06 09

Page 5: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

Meiner Großmutter Emilie Carrick,geboren 1907, gestorben 2002.

Nan, Du hast Veränderungen und Schwierigkeiten erlebt und sie

gemeistert. Du hast in jedem Menschen immer nur das Gute gesehen und hast auch ihnen geholfen, es zu erkennen.

Du hast alle geliebt und hast uns beigebracht, wie man liebt.

Ich vermisse Dich.

369.book Seite V Dienstag, 22. Mai 2007 9:06 09

Page 6: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

369.book Seite VI Dienstag, 22. Mai 2007 9:06 09

Page 7: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

| VII

Inhalt

Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

XI

Teil I:

Einführung

1

Was ist CVS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3Was ist ein Versionierungssystem? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3CVS in der Praxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2

Schnelleinstieg in CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9Installation von CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Ein erstes Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Projekte importieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Zugriff auf Remote-Repositorys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Dateien auschecken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Commit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Sandboxes aktualisieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Dateien hinzufügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Dateien löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Tipps für den schnellen Erfolg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Teil II:

Verwendung von CVS

3

Grundlagen der Anwendung von CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33Allgemeines zu CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Sandboxes und Repositorys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Änderungen an das Repository übergeben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Dateistatus prüfen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

369.book Seite VII Dienstag, 22. Mai 2007 9:06 09

Page 8: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

VIII | Inhalt

Sandbox-Dateien aus dem Repository aktualisieren . . . . . . . . . . . . . . . . . . . . . . 45Repository-Dateien hinzufügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Repository-Dateien entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Dateien oder Verzeichnisse verschieben. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Eine Sandbox aufgeben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Schlüsselwörter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Binärdateien und Wrapper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66Angabe von Standardbefehlsoptionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

4

Tags und Verzweigungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

Symbolische Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Stickiness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80Verzweigung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82Verzweigungsstrategien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

5

Mehrere Benutzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

99Simultane Entwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Eine Datei beobachten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Dateien reservieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107Vergleich von Dateirevisionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110Letzte Änderungen anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Datei-History anzeigen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

Teil III:

CVS-Administration

6

Repository-Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

119Erstellung eines Repositorys. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119Löschen eines Repositorys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121Sicherheit für die Projekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121Die Struktur des Repositorys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124Die Dateien in CVSROOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128Server-Umgebungsvariablen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140Sicherung eines Repositorys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141Bearbeitung eines Repositorys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148Struktur der Sandbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158Umgebungsvariablen auf dem Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161Exit-Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

369.book Seite VIII Dienstag, 22. Mai 2007 9:06 09

Page 9: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

Inhalt | IX

7

Projektmanagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

164

Erstellung eines Projekts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

Dateien verteilen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172Skripten ausführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

Schnittstellen zu externen Programmen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

Strategien and Praktiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

8

Remote-Repositorys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

196

Repository-Pfade angeben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Die Zugriffsmethode local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

Die Zugriffsmethoden ext und server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199Die Zugriffsmethode fork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

Die Zugriffsmethode gserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Die Zugriffsmethode kserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

Die Zugriffsmethode pserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208Verwendung von inetd mit gserver, kserver und pserver . . . . . . . . . . . . . . . . . . . 212

9

Problembehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

215Allgemeine Problembehebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

Verbindungsprobleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218Probleme mit Dateinamen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

Probleme mit Zeilenenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222Berechtigungsprobleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

Sperrdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

Teil IV:

Referenz

10

Befehlsreferenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

227Kommandozeilen-Optionen von CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

CVS-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

11

Referenz zu weiteren Themen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

269Administrationsdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270Dateien aus CVSROOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

CVSROOT-Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284Datumsangaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

Umgebungsvariablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

369.book Seite IX Dienstag, 22. Mai 2007 9:06 09

Page 10: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

X | Inhalt

Schlüsselwörter und Schlüsselwortmodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292

Mustererkennung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295Repository-Zugriffsmethoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297

Teil V:

Anhänge

A

Clients und Betriebssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

301

B

Tools für Administratoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

320

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

331

369.book Seite X Dienstag, 22. Mai 2007 9:06 09

Page 11: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

| XI

Einleitung

CVS (Concurrent Versions System) ist ein Programm, mit dem Sie Änderungen anDateien über einen Zeitraum nachverfolgen können. In der Software-Entwicklung hatsich CVS in Projekten bewährt, bei denen mehrere Entwickler Änderungen aufeinanderabstimmen, Versionen im Auge behalten und mehrere verschiedene Versionen desselbenCodes gleichzeitig herstellen mussten.

Dieses Buch eignet sich jedoch nicht nur für Software-Entwickler, sondern für jeden Ent-wickler von Produkten, die Änderungen unterworfen sind. CVS kann von allem, was sich inDateien speichern lässt, Versionen kontrollieren; somit hilft es Programmierern, System-administratoren, Software-Architekten, Schriftstellern, Grafikern und GUI-Spezialisten.Außerhalb des Computerbereichs können auch Autoren, Dichter, Manager, Architekten,Ingenieure, Buchhalter und alle, die in ihrem täglichen Leben mit Dateien umgehen, etwasdamit anfangen.

Aufbau dieses BuchsDie Kapitel dieses Buchs müssen nicht unbedingt in ihrer Reihenfolge gelesen werden, sodass Sie auch nur den Aspekt von CVS, den Sie gerade benötigen, nachschlagen können.Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wennman es von vorne nach hinten liest. Das Buch gliedert sich in fünf Teile.

Teil I, Einführung, erläutert die Grundlagen von CVS und gibt eine Anleitung zumSoforteinstieg. Falls Sie CVS noch nicht kennen, sollten Sie diese Anleitung lesen, ehe Siezu den übrigen Teilen des Buchs kommen. Teil I hat folgende Kapitel:

Kapitel 1, Was ist CVS?Dieses Kapitel gibt einen Überblick über CVS, Versionierungssysteme allgemein unddie Einsatzmöglichkeiten von CVS in der Praxis.

Kapitel 2, Schnelleinstieg in CVSWenn Sie ganz rasch mit CVS beginnen möchten, sollten Sie dieses Kapitel lesen. Eserklärt den Aufbau und die Verwendung eines einfachen CVS-Repositorys mit Stan-dardeinstellungen und nur minimalen Extras.

369.book Seite XI Dienstag, 22. Mai 2007 9:06 09

Page 12: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

XII | Einleitung

Teil II, Verwendung von CVS, erläutert die Grundlagen von CVS und beschreibt die all-täglichen Befehle. Teil II enthält folgende Kapitel:

Kapitel 3, Grundlagen der Anwendung von CVSHier werden die häufigsten CVS-Befehle und -Begriffe erklärt, die wohl jeder benöti-gen wird, der mit CVS arbeitet. Zu jedem Befehl gibt es ein Beispiel und eineBeschreibung der gebräuchlichsten Optionen.

Unter anderem werden die Befehle add, remove, commit und update erläutert.Außerdem gibt es Erklärungen zu den Begriffen CVS-Repository und Sandbox, zuKonflikten und Zusammenführungen (engl. merges) sowie der Verwendung vonCVS mit Binärdateien und dem Wechsel von Repositorys.

Kapitel 4, Tags und VerzweigungenTags, Verzweigungen und Zusammenführungen, bei denen Zweige wieder mit demStamm verschmolzen werden, sind eng zusammenhängende Themen. Dieses Kapi-tel erklärt die Konzepte von Tag und Verzweigung und beschreibt, wann undwarum Sie sie in Ihrem Projekt einsetzen, symbolische Tags (Marken) vor Releasesund den Einsatz von Verzweigung (engl. Branching), um eine fehlerbereinigte Ver-sion eines Projekts zu erstellen.

Kapitel 5, Mehrere BenutzerDieses Kapitel erklärt, welche Systeme in CVS ermöglichen, dass mehrere Entwick-ler ohne Datenverluste am selben Projekt arbeiten können. So werden beispiels-weise die Befehle beschrieben, mit denen sich Änderungen an Dateien anzeigenlassen.

Teil III, CVS-Administration, wurde für Projektmanager und Repository-Administratorengeschrieben. Diese Kapitel können in beliebiger Reihenfolge gelesen werden, doch diespäteren Kapitel setzen die Kenntnis der in vorhergehenden Kapiteln erläuterten Befehlevoraus. Zu Teil III gehören folgende Kapitel:

Kapitel 6, Repository-ManagementHier werden die Repository-Verwaltung und die Module eines Repositorys erklärt.Das Kapitel behandelt die Erstellung eines Repositorys, die Abschätzung des erfor-derlichen Festplattenplatzes, die Struktur des CVS-Repositorys, Konfiguration undBerechtigungen, die Sicherheit des Repositorys und seine manuelle Bearbeitung.

Kapitel 7, ProjektmanagementHier werden die Werkzeuge für Projektleiter behandelt: der Im- und Export vonProjekten, der Befehl cvs admin, das Lesen der Ausgabe und der Log-Befehle sowieder Einsatz der info-Konfigurationsdateien für die Arbeit mit Fehlerverfolgungssyste-men oder für die Erzwingung von Log-Nachrichtenformaten.

Kapitel 8, Remote-RepositorysBei den meisten Projekten liegt das Repository auf einem anderen als dem Client-Computer. Dieses Kapitel behandelt Sicherheitsfragen und Verfahren für denRemote-Zugriff und beschreibt, wie die jeweiligen Methoden eingerichtet werden.

369.book Seite XII Dienstag, 22. Mai 2007 9:06 09

Page 13: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

Einleitung | XIII

Kapitel 9, ProblembehandlungJedes Tool hat seine Tücken. Hier wird beispielhaft beschrieben, welche Problemebei der Arbeit mit CVS auftreten können und wie sie behoben werden.

Teil IV, Referenz, soll als Nachschlagewerk verwendet werden. Er umfasst folgende Kapi-tel:

Kapitel 10, BefehlsreferenzDieses Kapitel ist eine Referenz der CVS-Befehle. Diese werden komplett mit Syn-tax und Optionen vorgestellt.

Kapitel 11, Referenz zu weiteren ThemenHier werden die CVS-relevanten administrativen Dateien, Umgebungsvariablen,Datumsformate, Mustererkennungsverfahren und Repository-Zugriffsmethoden inForm einer Referenz vorgestellt.

Teil V, Anhänge, gibt Kurzinformationen über und Hinweise auf diverse Werkzeugeanderer Hersteller, die mit CVS verwendet werden können. Folgende Anhänge sind ent-halten:

Anhang A, Clients und BetriebssystemeHier werden CVS-Clients von Fremdherstellern für Betriebssysteme von Windows,Unix, GNU/Linux und Macintosh vorgestellt. Außerdem werden Tools beschrie-ben, die CVS in integrierte Entwicklungsumgebungen (IDEs) einbinden können.

Anhang B, Tools für AdministratorenDa CVS so ein nützliches Open Source-Tool ist, wurden schon viele Zusatzpro-gramme dafür entwickelt. In diesem Anhang werden einige der nützlichsten Werk-zeuge vorgestellt, die für CVS erhältlich sind.

Typografische KonventionenFolgende Konventionen gelten in diesem Buch:

KursivWird für CVS-Befehle und ihre Optionen, für Schlüsselwörter in CVS-Konfigura-tionsdateien, für Datei- und Verzeichnisnamen, zur Hervorhebung und bei der Ein-führung neuer Fachbegriffe verwendet.

NichtproportionalschriftZeigt Code-Beispiele und Dateiinhalte an.

Kursive NichtproportionalschriftMarkiert in Syntaxbeschreibungen die Elemente, die vom Benutzer definiert sind.

Fette NichtproportionalschriftZeigt Benutzereingaben in Beispielen an, die sowohl Ein- als auch Ausgaben enthal-ten.

[ ]Optionale Elemente in Syntaxdiagrammen stehen in eckigen Klammern.

369.book Seite XIII Dienstag, 22. Mai 2007 9:06 09

Page 14: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

XIV | Einleitung

{ }Geschweifte Klammern enthalten Listen von Elementen, aus denen Sie eines aus-wählen müssen.

|Senkrechte Striche trennen Elemente in Listen, die in eckigen oder geschweiftenKlammern ([...] oder {...}) stehen.

...Auslassungszeichen in Syntaxdiagrammen zeigen Wiederholungen an. Außerdemwerden sie aus Gründen der Klarheit und der Platzersparnis in Code-Beispielen anStelle unwichtiger Ausgaben eingesetzt.

(tab)In manchen Syntaxdiagrammen wird durch (tab) angezeigt, dass Sie an dieser Stelleein Tabulatorzeichen eingeben müssen.

SSH, ssh

SSH (in normalen Großbuchstaben) ist eine Abkürzung für das Secure Shell-Proto-koll, und ssh (in kursiven Kleinbuchstaben) ist der Unix-Befehl, mit dem ein SSH-Programm häufig aufgerufen wird.

Dies ist ein Tipp. Er enthält wertvolle Informationen zum aktuellenThema. Er weist häufig auf die beste Programmierpraxis und wichtigeKonzepte hin.

Dies ist ein Warnhinweis. Er hilft Ihnen, lästige Probleme zu vermeiden,und bewahrt Sie vor drohendem Unheil. Nichtbeachtung erfolgt auf eigeneGefahr.

Weiterführende Informationen zu CVSZusätzlich zu diesem Buch gibt es eine Vielzahl anderer Quellen zu CVS. Da CVS eineaktive Nutzergemeinde hat, kann man davon ausgehen, dass mit der Zeit immer mehrQuellen hinzukommen.

Website und ManpagesDie Homepage von CVS finden Sie unter http://www.cvshome.org/. Hier finden Sie auchdas info cvs-Handbuch von Per Cederqvist et al., eine FAQ-Liste zu CVS sowie Links zuden meisten verfügbaren Drittanbieter-Tools zu CVS.

Auf Unix- und Linux-Systemen erhalten Sie mit den Befehlen man cvs und info cvs eineDokumentation für den Server und den Befehlszeilen-Client.

369.book Seite XIV Dienstag, 22. Mai 2007 9:06 09

Page 15: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

Einleitung | XV

Bücher zu CVSCVS – kurz & gut von Gregor N. Purdy ist ein nützliches und handliches Buch vonO’Reilly.

Applying RCS and SCCS von Don Bolinger und Tan Bronson beschreibt RCS, das Tool,das CVS aufruft, um einzelne Dateien in seiner Datenbank zu verwalten. Auch diesesBuch erschien bei O’Reilly.

Open Source-Projekte mit CVS von Karl Franz Fogel und Moshe Bar ist eine Anleitung zuCVS und Open Source-Projektmanagement. Die Druckversion ist beim Verlag mitperschienen, und Teile des Buchs stehen auch online unter http://cvsbook.red-bean.com/translations/german/ zur Verfügung.

Version Management with CVS von Per Cederqvist et al. steht unter http://www.cvs-home.org/docs/manual/ im Web und kann auch mit info cvs aufgerufen werden. DieDruckfassung erschien bei Network Theory Ltd.

Linux Server Hacks von Rob Flickenger ist beim O’Reilly Verlag erschienen. Das Buchenthält unter anderem elf Hacks für Systemadministratoren, die mit CVS arbeiten.

SupportCVS ist ein Open Source-Projekt. Das bedeutet, eventuell notwendigen Support zu CVSerhalten Sie nicht von einer einzelnen Firma, sondern von einer Vielzahl anderer CVS-Benutzer. Die offiziellen Mailinglisten zu CVS finden Sie unter http://www.cvs-home.org/communication.html. Die wichtigsten darunter sind [email protected] für Dis-kussionen und Support und [email protected] für Bugreports. Zwei Newsgroups, indenen Sie auch Unterstützung für Probleme bekommen können, sind comp.software.con-fig-mgmt und fa.info-cvs.

Die Codebeispiele zu diesem BuchEs gibt eine deutsche und eine amerikanische Website von O’Reilly, auf der Sie Beispiele,Errata und weitere Informationen zu diesem Buch finden können:

http://www.oreilly.de/catalog/cvsger/http://www.oreilly.com/catalog/cvs/

Viele der in diesem Buch abgedruckten Codebeispiele stehen dort in englischsprachigerVersion zum Herunterladen zur Verfügung. Bitte klicken Sie auf den Beispiel-Link aufder Katalogseite zum Buch.

369.book Seite XV Dienstag, 22. Mai 2007 9:06 09

Page 16: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

XVI | Einleitung

DanksagungenKein Buch ist nur die Leistung eines Einzelnen, und auch ich hatte bei meinem eineMenge Hilfe. Meine Freunde und meine Familie haben mich sehr ermutigt, und dieFrauen und Männer von LinuxChix hielten mich bei der Stange, wenn es einmal schwie-rig wurde. Danke Euch allen!

Außerdem danke ich Chris Klint und David North für die Spende eines Laptops undeines Laptop-Festplattenlaufwerks, als ich während der Arbeit an diesem Buch verreisenmusste. Danke an Sonja Krause-Harder und Rebecca Walter Pedersen für die Informa-tionen über SuSE, Alan Cox und Telsa Gwynne für die Informationen über Red Hat undAkkana Peck für das Testen unter Red Hat. Danke außerdem an Mia Ridge für dieInformationen über Macintosh und Michelle Peglar für die Nutzung eines Macintosh.

Auch meinem Lektor Jonathan Gennick schulde ich Dank. Als ich anfing, hielt ich michfür eine passable Autorin, aber jetzt bin ich eine viel, viel bessere. Danke, Jonathan.

Ich danke Derek Price für die technische Begutachtung. Seine Kommentare haben sicher-gestellt, dass dieses Buch korrekt ist und die Empfehlungen der Entwickler von CVSwiderspiegelt.

Herzlichen Dank an Ellie Volckhausen, Betsy Waliszewski, Bonnie Sheehan und alleanderen O’Reilly-Mitarbeiter, die mit ihrer harten Arbeit dieses Buch erst möglichgemacht haben.

Frau Dr. Anne Small und ihrem engagierten Mediziner-Team danke ich ebenfalls. OhneSie wäre ich jetzt keine Autorin, sondern ein Krüppel. Dafür werde ich bis ans Ende mei-ner Tage dankbar sein.

Ich danke meinen lieben Freunden Mike Whitaker und Richard Gencks für ihre Ermuti-gung und emotionale Unterstützung, als meine Großmutter starb, während ich geradedas Buch zu Ende brachte. (Ich liebe dich, Nan.)

Und meinem Mann, Dancer Vesperman, und unserer Mitbewohnerin und FreundinKaren Hall: danke. Ohne Euch hätte ich das nicht geschafft.

369.book Seite XVI Dienstag, 22. Mai 2007 9:06 09

Page 17: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

TEIL I

I.

Einführung

In diesem Teil des Buchs werden die Grundbegriffe von CVS erläutert. In einer kurzenEinführung erfahren Sie, wie Sie als Neuling schnell mit CVS arbeiten können und wasSie benötigen, um CVS rasch zu installieren, zu konfigurieren und funktionsfertig zumachen. Teil I besteht aus folgenden Kapiteln:

Kapitel 1, Was ist CVS?Dieses Kapitel gibt einen Überblick über CVS, Versionierungssysteme allgemein undden praktischen Einsatz von CVS.

Kapitel 2, Schnelleinstieg in CVSWenn Sie schnell mit CVS arbeiten möchten, schauen Sie in dieses Kapitel. Eserklärt, wie Sie ein einfaches CVS-Repository mit den Standardeinstellungen undeinem Minimum an Extras anlegen können.

369.book Seite 1 Dienstag, 22. Mai 2007 9:06 09

Page 18: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

369.book Seite 2 Dienstag, 22. Mai 2007 9:06 09

Page 19: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

| 3

KAPITEL 1

Was ist CVS?

CVS ist ein System zur Versionskontrolle. Es zeichnet Dateien während der gesamtenEntwicklung auf, kann jede beliebige gespeicherte Version einer Datei abrufen und unter-stützt die Herstellung mehrerer Versionen. Mit CVS können mehrere Entwickler gleich-zeitig ohne Datenverluste an derselben Datei arbeiten. Dabei bearbeitet jeder Entwicklerseine eigene Kopie einer Datei, und hinterher werden alle Arbeitskopien zu einer einzigenMasterdatei zusammengeführt. CVS lässt sich mit Fehler- und Feature-Verfolgungssyste-men verbinden und ermöglicht Projektmanagern das Nachvollziehen der Änderungen,die ein Projekt im Laufe der Zeit erfährt.

CVS ist in vielen Umgebungen vielfältig einsetzbar, beispielsweise für die Pflege von Kon-figurationsdateien, Mail-Aliasnamen, Quellcode, FAQ-Dateien, Kunst, Musik, Zeit-schriftenartikeln, Essays und Büchern. Einige Systemadministratoren halten mit Hilfevon CVS alle Dateien des /etc-Verzeichnisses in Ordnung, um die Änderungen der Sys-temkonfiguration nachzuhalten. Doch auch zur Speicherung und automatischen Veröf-fentlichung von Inhalten für Websites und FTP-Server wird CVS eingesetzt.

CVS hält sich an den Unix-Grundsatz, nach dem ein Programm schlank sein und seineAufgabe gut erledigen soll. Das Programm RCS (Revision Control System) kümmert sichum die Revisionskontrolle bei einzelnen Dateien, und CVS speichert mit Hilfe von RCSseine Dateidaten. Doch CVS hat mehr Funktionen als RCS, darunter insbesondere dieFähigkeit, mit einer ganzen Sammlung von Dateien zu arbeiten, und zwar ausgehend voneinem lokal oder remote gespeicherten Repository.

Was ist ein Versionierungssystem?Der Begriff Versionskontrolle bezeichnet das Aufzeichnen und Abrufen von Änderungenan einem Projekt.1 Ein Versionskontrollsystem ermöglicht es, eine alte Version abzuru-fen, um Fehler zu beheben oder Funktionen zu aktualisieren, eine Entwicklung verzwei-

1 Informatiker definieren Versionskontrolle, Quellcodekontrolle und Änderungsmanagement als verschiedene,aber einander überschneidende Aufgaben, die zusammenfassend Software Konfigurations-Management (SKM)genannt werden. Für das Einsatzgebiet von CVS passt der Begriff Versionskontrolle am besten.

369.book Seite 3 Dienstag, 22. Mai 2007 9:06 09

Page 20: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

4 | Kapitel 1:

Was ist CVS?

gen zu lassen, damit das Projekt auf mehreren Bahnen gleichzeitig weiterlaufen kann,und Berichte zu generieren, die Änderungen zwischen zwei beliebigen Stadien des Pro-jekts ausweisen.

Die meisten Versionskontrollsysteme speichern zu jeder Änderung auch Hinweise undstellen eine Vielzahl von Werkzeugen zur Verfügung, mit denen ein Projektleiter dieÄnderungen analysieren kann. Die meisten dieser Programme sind auch in der Lage, dieUnterschiede zwischen zwei beliebigen Dateiversionen festzustellen, was die Erstellungvon Patches und das Auffinden von Fehlern erleichtert.

Versionskontrollsysteme wie CVS haben folgende Vorteile:

• Jede gespeicherte Revision einer Datei kann abgerufen werden, um sie zu lesen oderzu ändern.

• Die Unterschiede zwischen zwei beliebigen Revisionen lassen sich anzeigen.

• Patches können automatisch erstellt werden.

• Mehrere Entwickler können ohne Datenverluste gleichzeitig an demselben Projektarbeiten.

• Man kann das Projekt verzweigen lassen, um die Entwicklung auf mehreren ver-schiedenen Bahnen gleichzeitig voranzutreiben. Die Verzweigungen können späterwieder mit der Hauptentwicklungslinie zusammengeführt werden.

• Diese verteilte Entwicklung wird auch in großen oder kleinen Netzwerken ermög-licht. (CVS bietet ebenfalls eine Reihe von Authentifizierungsmechanismen an.)

Die Versionskontrolle in einem Projekt erfordert permanent einen gewissen Mehrauf-wand. Außerdem belegen die Vorversionen von Dateien oder die Änderungsberichte zuden verschiedenen Dateien Speicherplatz, der ansonsten für andere Zwecke genutzt wer-den könnte. Doch die Möglichkeiten, die ein gutes Versionskontrollsystem bietet, sind eswert, ein wenig Zeit und Speicherplatz zu opfern. Ohne Versionskontrolle bestehen Pro-jektsicherungen in der Regel in mit einem Zeitstempel versehenen Kopien des Gesamt-projekts, die hoffentlich zusammenhängend in irgendeiner logischen Form gespeichertwerden. Dagegen ermöglicht ein Versionskontrollsystem das organisierte Speichern undAbrufen der gesamten Änderungen eines Projekts und nicht nur der Kopien, für die sichirgendjemand irgendwann einmal die Zeit genommen hat.

Versionskontrollsysteme speichern Dateien dann, wenn sie angelegt oder geändert wer-den, und zwar so, dass jede gespeicherte Version einer Datei oder zusammenhängendeVersionen mehrerer zusammengehöriger Dateien jederzeit abrufbar sind. Viele Versions-kontrollsysteme – darunter auch CVS – verlangen zudem, dass die Dateien eines Projektszusammen gespeichert werden, damit Sicherungen leichter herzustellen sind.

Da sich von einer gegebenen Datei auch ältere Versionen wiederherstellen lassen, könnenSie die Entwicklung zurückdrehen, um Anfragen nach Funktionalitäten einer früherenVersion zu beantworten. Außerdem ist diese Fähigkeit wichtig, wenn Sie einen Bugfix-Zweig eines Projekts anlegen möchten. CVS (und auch manches andere Versionskon-

369.book Seite 4 Dienstag, 22. Mai 2007 9:06 09

Page 21: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

CVS in der Praxis | 5

trollsystem) ermöglicht es, den Bugfix-Zweig und den Hauptstamm eines Projekts gleich-zeitig zu speichern.

Viele Versionskontrollsysteme, einschließlich CVS, können die Unterschiede zwischenzwei Versionen in einem für Computer lesbaren Format anzeigen. CVS verwendet einFormat, aus dem das patch-Programm von Unix automatisch eine Version einer odermehrerer Dateien in eine andere konvertieren kann.

Oft ermöglicht eine Versionskontrolle, dass mehrere Projekte dieselben Dateien nutzenkönnen. Das ist hilfreich, wenn ein großes Projekt auf kleinere Teams aufgeteilt wird.Jedes Team kann eine versionskontrollierte Kopie des Projektteils bekommen, an dem esarbeitet, und zusätzlich die aktuellste stabile Version der Dateien, die es zum Testen sei-nes Projektteils benötigt.

Es kommt auch vor, dass zwei oder mehr Entwickler dieselbe Datei ändern. Die Ände-rungen können in verschiedenen Teilen der Datei liegen und müssen sich nicht gegensei-tig behindern. Doch gelegentlich liegen sie auch im selben Teil der Datei und treten inKonflikt miteinander. In solchen Fällen tut CVS sein Bestes, um diese konfliktträchtigenÄnderungen zu versöhnen. Doch das Programm weiß nur, welche Zeilen einer Dateigeändert wurden, und nicht, was die Änderungen bedeuten. Allerdings hat CVS Tools,um Änderungen zwischen zwei beliebigen Versionen anzuzeigen. Diese Tools könnendabei helfen, die Probleme zu finden und zu lösen.

Versionskontrolle ist kein Ersatz für die Kommunikation der Teammitglieder. Dateiände-rungen sollten über CVS eingepflegt werden, aber die Bedeutung dieser Änderungenmuss auch im Gespräch an die anderen Mitglieder des Teams weitergegeben werden.Wenn ein Entwickler die Argumente einer Funktion oder die Kapitelnummern einesBuchs ändert, muss er das den anderen Entwicklern mitteilen.

Versionierungssysteme werden am häufigsten für die Programmierung eingesetzt, helfenaber auch beim Schreiben (ich habe CVS beim Schreiben dieses Buchs genutzt), bei derSystemadministration (Konfigurationsdateien) und bei allen anderen Tätigkeiten, beidenen Dateien geändert werden und man gelegentlich ältere Versionen dieser Dateiennachschauen möchte, oder auch in Situationen, in denen mehrere Personen gleichzeitigan denselben Dateien arbeiten. Ich kenne eine Familie, die CVS benutzt, um ihre Ein-kaufszettel zu speichern, damit verhindert wird, dass der eine die Einträge des anderenüberschreibt.

CVS in der PraxisCVS zeichnet Dateiänderungen während einer Projektentwicklung auf. Die Projektda-teien werden schon in dem Augenblick ihrer Erzeugung in das Repository eingepflegt,aus dem jeder Entwickler dann seine eigene Sandbox auscheckt: eine persönliche Arbeits-kopie der Projektdateien. Jeder Entwickler arbeitet in seiner Sandbox und übergibt durchregelmäßige Commits seine Änderungen an das Repository. Mit derselben Regelmäßig-

369.book Seite 5 Dienstag, 22. Mai 2007 9:06 09

Page 22: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

6 | Kapitel 1:

Was ist CVS?

keit aktualisiert er den Inhalt seiner Sandbox, damit diese die Änderungen am Repositorywiderspiegelt.

Der Begriff Projekt kann mehrere verschiedene Bedeutungen haben. Das typische CVS-Projekt ist ein Programmierprojekt, dessen Dateien den Quellcode für die verschiedenenProgramme enthalten, die als Teile des Projekts geschrieben werden. Das ist jedoch einezu enge Sicht dessen, was ein CVS-Projekt sein kann. Denn CVS kann auch in ganz ande-ren Zusammenhängen verwendet werden, wie die nächsten Abschnitte zeigen.

SystemadministrationCVS kann Konfigurationsdateien, E-Mail-Aliase, Domain-Aufzeichnungen und generellalle Dateien speichern, deren Änderungen man nachhalten muss. Importieren Sie dieDateien (oder das gesamte /etc-Verzeichnis) in ein Repository und bitten Sie die Admi-nistratoren, diese Dateien in Sandboxes auszuchecken, wenn sie Änderungen vornehmenmöchten. Dann übergeben Sie die Dateien mit einem Commit zurück an das Repositoryund exportieren die Änderungen an den Server. Wenn die Änderungen fehlschlagen,kann man alles ganz leicht in den vorherigen Zustand zurückversetzen.

Man kann mehrere Server mit abweichenden, aber ähnlichen Konfigurationen pflegen,indem man verschiedene Zweige derselben Dateien verwendet. Änderungen an einemZweig können selektiv mit anderen Zweigen zusammengeführt werden.

Jede mit CVS an einer Datei vorgenommene Änderung wird in der History zusammenmit dem Benutzernamen der ausführenden Person, dem Datum der Änderung und even-tuellen Hinweisen aufgezeichnet. Mithilfe dieser Informationen lässt sich beispielsweiseherausfinden, welche Änderung an welcher Konfigurationsdatei den Mail-Server hatabstürzen lassen.

CVS-Server und -Client laufen auf allen Unix- und Linux-Betriebssystemen. Von anderenHerstellern sind grafische Clients für Unix, Linux, Windows und Macintosh sowie fürdie Java-Laufzeitumgebung erhältlich. Der CVSNT-CVS-Server steht für Windows NToder höher zur Verfügung. Dadurch eignet sich CVS ganz besonders für Umgebungenmit mehreren Plattformen.

Software-EntwicklungDie Entwicklung von Programmen ist vielleicht das häufigste Einsatzgebiet für Versions-kontrollsysteme. Nach dem ersten Release eines Programms müssen zwei Versionen wei-tergepflegt werden: die neue Version, die letztlich in den nächsten Release mündet, unddie Bugfix-Version des alten Releases. Mit CVS lässt sich die Entwicklung in zwei odermehr Teile aufspalten, die man als Stamm (engl. trunk) und als Zweig (engl. branch)bezeichnet. Der Zweig ist für Bugfixes da, während der Stamm die neu entwickeltenFunktionalitäten aufnimmt. Beide werden in demselben Repository gespeichert. Aufdiese Weise können die Änderungen, die im Bugfix-Zweig geschehen, letztendlich mit

369.book Seite 6 Dienstag, 22. Mai 2007 9:06 09

Page 23: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

CVS in der Praxis | 7

dem Stamm zusammengeführt werden, um zu gewährleisten, dass alle Bugfixes in dasnächste Release des Programms einfließen.

Ein CVS-Repository kann entweder auf einem Computer liegen, den die Entwicklerdirekt benutzen, oder auf einem Computer, auf den sie über ein LAN oder WAN Zugriffhaben. Auf das CVS-Repository können mehrere Computer simultan zugreifen. WennSie Ihre CVS-Benutzer authentifizieren müssen, stehen auch dafür eine Reihe von Mecha-nismen zur Verfügung.

Wenn mehrere Entwickler versuchen, an demselben Projekt zu arbeiten, dann arbeitenwahrscheinlich irgendwann auch einmal zwei oder mehr Entwickler zugleich an dersel-ben Datei. Ohne eine Versionskontrolle wäre das problematisch, da die Entwicklergegenseitig ihre Änderungen überschreiben würden. Manche Versionskontrollsystemeverhindern das, indem sie den Entwicklern die Möglichkeit geben, die Dateien, an denensie gerade arbeiten, zu sperren, damit niemand anderer zur gleichen Zeit Änderungendaran vornehmen kann.

CVS geht einen anderen Weg. Es ermöglicht, dass mehrere Entwickler gleichzeitig dieselbeDatei bearbeiten. Später können alle diese Änderungen mit der CVS-Funktion der Dateizu-sammenführung zu einer einzigen Datei verschmolzen werden. Diese Funktion ist auchhilfreich bei einer Entwicklung über mehrere Zeitzonen, da die Entwickler an verschiede-nen Teilen derselben Datei unabhängig von ihrem Sperrstatus arbeiten können. Es gibt kei-nen Sperrstatus, weil es keine Sperren gibt. Mit einem System, das Dateien sperrt, muss einEntwickler unter Umständen seinem Kollegen eine E-Mail schicken und dann warten, bisdieser aus dem Bett gekrochen ist, seine E-Mails abruft und die benötigte Datei entsperrt.Mit CVS kommt es nicht vor, dass sich die Entwickler gegenseitig blockieren. Das erhöhtdie Produktivität. Doch wenn Ihr Projektteam auf Dateisperren nicht verzichten kann, las-sen sich diese mit dem Befehl cvs watch emulieren.

Der Befehl cvs diff zeigt die Unterschiede zwischen zwei beliebigen Revisionen einerDatei(menge) im Repository an. Eine Abwandlung dieses Befehls erzeugt eine Unix-Stan-dard-Patchdatei, um eine Revision auf den Stand einer anderen zu aktualisieren. Das istnützlich, wenn Sie Patches oder Updates an Kunden schicken möchten.

CVS kann so konfiguriert werden, dass es Commit-Nachrichten in Fehlerverfolgungssys-temen aufzeichnet. In Kapitel 7 wird erklärt, wie man Verwaltungsdateien nutzt, umNachrichten-Templates zu erstellen und Skripten bei Commits automatisch auszufüh-ren. Damit wird nicht unbedingt das Stadium jeder Änderung notiert (abgeschlossen,getestet usw.). Wenn Sie nicht strikt erzwingen, dass aussagekräftige Commit-Nachrich-ten geschrieben werden, sollten Sie ein separates Änderungs-Log pflegen.

Sie sollten Ihre Build- und Installationsskripten in CVS speichern, um die Änderungennachzuhalten und zu gewährleisten, dass solche Skripten zusammen mit den Projektda-teien gespeichert werden. Die Releases sollten immer auf einer frisch ausgechecktenSandbox beruhen und mit einem für Menschen lesbaren Namen versehen werden.

369.book Seite 7 Dienstag, 22. Mai 2007 9:06 09

Page 24: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

8 | Kapitel 1:

Was ist CVS?

CVS enthält zwar keine Build- oder Installations-Tools, aber cvs export sollte immer Teildes Installationsprozesses für Ihr Projekt sein. Für Build- und Installationsskripten ver-wende ich gern make.

Content-Controlled PublishingOft wird CVS zur Pflege von Websites und anderen Datei-Servern verwendet, und oftauch im Zusammenhang mit Skripten, die automatisch Aktualisierungen an diese Serverweitergeben. Manchmal werden Skripten verwendet, um Patchdateien an Remote-Com-puter zu schicken und dort anzubringen. Dadurch spart man Bandbreite, da nur dieÄnderungen weitergegeben werden. Eine Reihe solcher Skripten ist unter http://www.cvs-home.org zu finden, und einige werden auch in Anhang B erklärt.

Andere Einsatzgebiete für CVSMit CVS lassen sich übrigens auch alle anderen Arten von Dateien verwalten: Buchkapi-tel, Pläne, Musik, Kunst, Mailinglisten, ja sogar Einkaufszettel. Die Funktionen, die esfür Programmierer so nützlich machen, können auch jedem anderen zugute kommen,der irgendetwas herstellt, das sich als Computer-Datei speichern lässt.

369.book Seite 8 Dienstag, 22. Mai 2007 9:06 09

Page 25: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

| 9

KAPITEL 2

Schnelleinstieg in CVS

Damit Sie einen raschen Einstieg in CVS finden, erläutert dieses Kapitel die häufigstenCVS-Operationen. Die Befehle und Beispiele in diesem Kapitel sind Standardsituationenentnommen und beziehen nur die gebräuchlichsten Optionen mit ein. In späteren Kapi-teln werden diese Themen noch gründlicher behandelt.

Die Beispiele und Anleitungen in diesem Kapitel basieren auf dem CVS-Kommandozei-len-Client für Unix/Linux. Da die meisten grafischen Clients die Namen der CVS-Befehlefür ihre Menüoptionen und Schaltflächen verwenden, kann jeder Leser, der einen sol-chen Client verwendet, diesem Kapitel leicht folgen. Grafische Clients und Clients fürandere Betriebssysteme als Unix oder Linux werden in Anhang A beschrieben.

Vielleicht müssen Sie dieses Kapitel gar nicht komplett lesen. Halten Sie sich an folgendeGrundsätze:

• Wenn Sie an einem bestehenden Projekt arbeiten, das bereits in CVS gespeichert ist,überspringen Sie die ersten Abschnitte und beginnen bei »Dateien auschecken«.

• Wenn CVS bei Ihnen bereits installiert ist und läuft und ein Repository für Ihr Pro-jekt zur Verfügung steht, gehen Sie direkt zum Abschnitt »Projekte importieren«.

Wenn Sie nicht sicher sind, ob CVS bereits installiert ist und läuft, lesen Sie den erstenTeil von »Installation von CVS«: Hier erfahren Sie, was Sie überprüfen sollten. Wenn Sienicht wissen, ob ein Repository vorhanden ist, suchen Sie das Verzeichnis CVSROOT.Die Wurzel des Repositorys ist das Verzeichnis, in dem CVSROOT liegt. Die restlichenVerzeichnisse auf der oberen Ebene des Repositorys sind CVS-Projekte.

Installation von CVSCVS ist eine Client/Server-Software, die auf Unix- und Linux-Systemen läuft. Wenn SieCVS auf einem Unix-/Linux-Server installieren, bekommen Sie automatisch sowohl dieServer- als auch die Client-Software. Um über das Netzwerk mit einem beliebigenUnix-/Linux-Computer auf CVS zuzugreifen, installieren Sie einfach CVS auf dem betref-fenden Rechner. Die Server- und Client-Software ist ein- und dasselbe.

369.book Seite 9 Dienstag, 22. Mai 2007 9:06 09

Page 26: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

10 | Kapitel 2:

Schnelleinstieg in CVS

CVS kann von http://www.cvshome.org heruntergeladen werden. Das Programm stehtauch als Installations-Package in vielen GNU/Linux-Distributionen zur Verfügung, dar-unter Debian, Red Hat und SuSE.

Wenn Sie GUI-Clients bevorzugen, empfehle ich einen Besuch bei http://www.win-cvs.org. Dort finden Sie gCVS, WinCVS und MacCVS, die GUI-Clients für Unix undGNU/Linux, Windows und Macintosh (vor OS X).1

Wenn Sie Macintosh mit OS X benutzen, können Sie den standardmäßi-gen CVS-Server und -Client für Unix installieren.

Ein Windows-kompatibler CVS-Server ist unter http://www.cvsnt.org zu bekommen. Die-ser ist zwar nicht identisch mit dem Unix-Server, aber die Unterschiede stehen klar unddeutlich in den FAQs, und zusätzlich ist auf der Website auch eine Installationsanleitungerhältlich.

Wenn Sie das Secure Shell-(SSH-)Protokoll für sichere Verbindungen zwischen CVS-Cli-ents- und -Servern benutzen möchten, müssen Sie kompatible Versionen von SSH aufClient und Server installieren. Für Clients müssen Sie unter Umständen eine SSH-Versionfinden, die auf der Befehlszeile ausgeführt werden kann. Weitere Informationen zu die-sem Thema finden Sie unter »Zugriff auf Remote-Repositorys«.

Die OpenSSH-Website (http://www.openssh.com) ist ein guter Ausgangspunkt für dieSuche nach Informationen über SSH und SSH-Clients. Außerdem empfehle ich die Lek-türe von SSH, The Secure Shell: The Definitive Guide (O’Reilly) von Daniel J. Barrett,Ph.D. und Richard Silverman. Jede nur erdenkliche Frage wird bei den SSH-FAQs unterhttp://www.employees.org/~satch/ssh/faq/ beantwortet. Die Google-Liste von Dokumen-tationen über SSH finden Sie unter http://directory.google.com/Top/Computers/Security/Products_and_Tools/Cryptography/SSH/Documentation/.

Bei den meisten Unix- und Linux-Systemen ist ein SSH-Client bereits als Standardpro-gramm installiert. Auch bei Mac OS X ist ein SSH-Client vorinstalliert. Und wenn ernicht automatisch mitinstalliert wurde, ist ein SSH-Client normalerweise in jeder Distri-bution als optionales Programm enthalten.

Auf der Website für MacCVS können Sie einen guten Artikel über SSH für Macintosh unterhttp://www.heilancoo.net/MacCVSClient/MacCVSClientDoc/ssh.html lesen. Die Anleitun-gen sind für jeden Macintosh-basierten CVS-Client von Nutzen.

Um einen SSH-Client für Windows ausfindig zu machen, beginne ich meine Suche aufder OpenSSH-Website zu Windows- und Macintosh-Clients (http://www.openssh.com/windows.html). 2

1 Alternativen finden Sie unter http://www.tortoisecvs.org/ oder http://www.lincvs.org/ (Anm. des Gutachters).

2 http://directory.google.com/Top/Computers/Security/Products_and_Tools/Cryptography/SSH/Clients/ ist eineweitere Möglichkeit (Anm. des Gutachters).

369.book Seite 10 Dienstag, 22. Mai 2007 9:06 09

Page 27: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

Installation von CVS | 11

Sollten Sie Unix oder Linux benutzen, ist CVS möglicherweise bereits bei Ihnen instal-liert. Wenn es in Ihrem Pfad installiert ist, fördert die Eingabe von cvs auf der Befehlszeiledie in Beispiel 2-1 gezeigten Resultate zu Tage.

Sofern CVS bereits installiert ist, können Sie diesen Abschnitt übergehen und gleich denAbschnitt »Ein erstes Repository« aufschlagen.

Zur Installation von CVS auf Unix laden Sie den Quellcode des Programms herunter undkompilieren ihn auf Ihrem System. Das funktioniert auch bei Linux, doch bieten vieleLinux-Distributionen auch die Möglichkeit, bereits vorkompilierte CVS-Binarys zuinstallieren. Nach dem folgenden Abschnitt, in dem es um die CVS-Installation ausQuelldateien geht, wird auch die Installation für verschiedene Linux-Distributionenerläutert.

CVS aus dem Quellcode installierenLaden Sie die komprimierte .tar-Datei von http://www.cvshome.org herunter, dekompri-mieren Sie sie und packen Sie das Archiv aus. Wenn Sie die Quelldateien auch nach derKompilierung noch bewahren möchten, entpacken Sie die .tar-Datei in das Verzeichnis/usr/src/cvs. Ansonsten können Sie das Dekomprimieren und Auspacken des Archivs in/tmp vornehmen. Als Nächstes wechseln Sie mit cd zum cvs-Verzeichnis, lesen dieINSTALL- und die README-Datei und führen dort die Befehle aus. Anfänger solltenautomake und autoconf deaktivieren.

Für die Kompilierung von CVS sollten Sie keine Superuser-Rechte ein-schalten, aber für die Installation benötigen Sie sie (für make install).

Beispiel 2-2 zeigt eine Beispielinstallation vom Quellcode. Ich dekomprimiere und entpa-cke die .tar-Datei in /tmp und gehe dann in das oberste Verzeichnis des resultierenden

Beispiel 2-1: Anzeige der CVS-Hilfe

$ cvsUsage: cvs [cvs-options] command [command-options-and-arguments] where cvs-options are -q, -n, etc. (specify --help-options for a list of options) where command is add, admin, etc. (specify --help-commands for a list of commands or --help-synonyms for a list of command synonyms) where command-options-and-arguments depend on the specific command (specify -H followed by a command name for command-specific help) Specify --help to receive this message

The Concurrent Versions System (CVS) is a tool for version control.For CVS updates and additional information, see the CVS home page at http://www.cvshome.org/ or Pascal Molli’s CVS site at http://www.loria.fr/~molli/cvs-index.html

369.book Seite 11 Dienstag, 22. Mai 2007 9:06 09

Page 28: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

12 | Kapitel 2:

Schnelleinstieg in CVS

Quellbaums. Als nächste Schritte sieht die INSTALL-Datei für CVS 1.11.5 vor, dasszuerst das mitgelieferte configure-Skript und nach seinem erfolgreichen Abschluss makeausgeführt wird. Zum Schluss melden Sie sich als Root-User an und lassen make installlaufen.

CVS-Installation mit aptapt ist der Package-Manager, der in Debian Linux und Debian-basierten Distributionenverwendet wird. Vergewissern Sie sich, dass Ihre apt-Quellliste eingerichtet ist, und füh-ren Sie vor der Installation von CVS apt-get update aus. Da das CVS-Package cvs heißt,lautet der Installationsbefehl:

apt-get install cvs

Beispiel 2-3 zeigt eine apt-Installation, wobei die meisten Ergebnisse des Befehls apt-getupdate weggelassen wurden.

Beispiel 2-2: Installation von der Quelle

/tmp$ lscvs-1.11.5.tar.gz/tmp$ gunzip cvs-1.11.5.tar.gz /tmp$ tar -xpf cvs-1.11.5.tar/tmp$ cd cvs-1.11.5/tmp/cvs-1.11.5$ ./configurecreating cache ./config.cachechecking for a BSD compatible install... /usr/bin/install -c...creating config.hconfig.status: executing depfiles commands/tmp/cvs-1.11.5$ makemake all-recursivemake[1]: Entering directory `/tmp/cvs-1.11.5'...make[2]: Leaving directory `/tmp/cvs-1.11.5'make[1]: Leaving directory `/tmp/cvs-1.11.5'/tmp/cvs-1.11.5$ su rootPassword:/tmp/cvs-1.11.5$ make installMaking install in libmake[1]: Entering directory `/tmp/cvs-1.11.5/lib'...make[2]: Leaving directory `/tmp/cvs-1.11.5'make[1]: Leaving directory `/tmp/cvs-1.11.5'/tmp/cvs-1.11.5$

369.book Seite 12 Dienstag, 22. Mai 2007 9:06 09

Page 29: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

Installation von CVS | 13

CVS-Installation mit rpmrpm ist der Package-Manager von Red Hat Linux. CVS befindet sich auf der zweiten CD-ROM der Red Hat-Distribution 7.3. Bei den folgenden Instruktionen setze ich voraus,dass Sie die CD in das Laufwerk eingelegt und gemountet haben oder dass das Packageauf andere Weise für den Package-Manager zugänglich gemacht wurde.

Wenn Sie rpm auf der Befehlszeile laufen lassen, müssen Sie auf der CD den Namen desCVS-Packages nachschauen. Er hat das Format cvs-version.rpm. Zur Installation vonCVS benutzen Sie folgenden Befehl:

rpm -Uh cvs-version.rpm

Wenn der Befehl Erfolg hat, sehen Sie keine Ausgabe. Falls Sie Fortschrittsanzeigenmögen, können Sie den Argumenten -v (für »verbose«, den ausführlichen Modus) hinzu-fügen. Beispiel 2-4 zeigt eine Befehlszeilen-Installation im ausführlichen Modus.

Wenn Sie Gnome besitzen, verwenden Sie wahrscheinlich GnoRPM:

1. Wählen Sie INSTALL. Dieser Befehl öffnet ein neues Fenster und lädt die Packagesvon der CD-ROM.

2. Öffnen Sie den Ordner Packages und dann die Unterordner Development und Tools.

3. Wählen Sie das Package cvs-version aus (derzeit cvs-1.11.1p1-7).

4. Klicken Sie auf INSTALL.

Beispiel 2-3: Installation mit apt

$ apt-get update... Reading Package Lists... DoneBuilding Dependency Tree... Done$ apt-get install cvsReading Package Lists... DoneBuilding Dependency Tree... DoneThe following NEW packages will be installed: cvs 0 packages upgraded, 1 newly installed, 0 to remove and 10 not upgraded.Need to get 0B/1085kB of archives. After unpacking 2626kB will be used.Reading changelogs... DonePreconfiguring packages ...Selecting previously deselected package cvs.(Reading database ... 39545 files and directories currently installed.)Unpacking cvs (from .../cvs_1.11.1p1debian-8_i386.deb) ...Setting up cvs (1.11.1p1debian-8) ...

Beispiel 2-4: Installation mit rpm

$ rpm -Uvh cvs-1.11.1p1-7.i386.rpm Preparing... ############################### [100%]1:cvs ############################### [100%]

369.book Seite 13 Dienstag, 22. Mai 2007 9:06 09

Page 30: Versionskontrolle und Quellcode-Management...Allerdings hat das Buch einen logischen Aufbau, und am verständlichsten ist es, wenn man es von vorne nach hinten liest. Das Buch gliedert

14 | Kapitel 2:

Schnelleinstieg in CVS

Abbildung 2-1 zeigt ein Beispiel mit GnoRPM.

Wenn Sie KDE verwenden, benutzen Sie KPackage:

1. Wählen Sie die Registerkarte NEW. Nun müssten die Packages von der CD-ROMgeladen werden.

2. Suchen Sie das cvs-Package und wählen Sie es aus.

3. Klicken Sie auf INSTALL. Wenn sich dann ein neues Fenster öffnet, klicken Sie zurBestätigung abermals auf INSTALL.

Abbildung 2-2 zeigt ein Beispiel mit KPackage.

CVS-Installation mit yastyast ist der Package-Manager von SuSE Linux. CVS befindet sich auf der zweiten CD-ROM von SuSE 7.3, kann aber in späteren Versionen auch auf einer anderen CD-ROModer in einer anderen Gruppe als in der nachfolgenden Liste vorliegen. Legen Sie die CDin Ihr CD-ROM-Laufwerk ein und starten Sie das YaST2-Kontrollcenter:

Abbildung 2-1: GnoRPM-Installation

369.book Seite 14 Dienstag, 22. Mai 2007 9:06 09