SelfLinux Programmierung CVS Verwaltung eines CVS-Archivs Abschnitt 3 | SelfLinux-0.13.0

| Verwaltung eines CVS-Archivs | Autor Formatierung GPL

#### 3 Anatomie einer CVS-Distribution

Die vorhergehenden Anweisungen sind dazu gedacht, Ihnen einen schnellen Überblick zu geben, es gibt aber noch viel mehr in einer CVS Quelldistribution als nur den reinen Quelltext. Hier ist eine schnelle Übersicht des Quelltextbaums, damit Sie wissen, welche Teile nützliche Ressourcen sind und welche ignoriert werden können.

#### 3.1 Informationsdateien

Im Hauptverzeichnis des Distributionsbaumes finden Sie verschiedene Dateien, die nützliche Informationen (und Hinweise auf weitere Informationen) beinhalten. Dies sind in ungefährer Reihenfolge der Relevanz:

NEWS - Diese Datei listet die Änderungen von einer Version zur nächsten in umgekehrter chronologischer Reihenfolge auf (das heißt, die aktuellsten zuerst). Wenn Sie CVS bereits eine Zeit lang verwendet und nur auf eine neue Version aktualisiert haben, sollten Sie sich die NEWS-Datei anschauen um zu sehen, welche neue Funktionalität verfügbar ist. Auch wenn die meisten Änderungen an CVS Rückwärtskompatibilität erhalten, kommen nicht kompatible Änderungen von Zeit zu Zeit vor. Es ist besser, hier über sie zu lesen, anstatt überrascht zu sein, wenn CVS sich nicht so verhält, wie Sie es erwarten.

BUGS - Diese Datei enthält genau das, was Sie erwarten: eine Liste bekannter Fehler in CVS. Sie sind üblicherweise nicht fatal, Sie sollten sie aber kennen, wenn Sie eine neue Version installieren.

DEVEL-CVS - Diese Datei ist die "Verfassung" von CVS. Sie beschreibt den Prozess, durch den Änderungen an der Haupt-CVS-Distribution akzeptiert werden, und die Vorgehensweisen, durch die man CVS-Entwickler wird. Sie müssen dies nicht wirklich lesen, wenn Sie CVS nur verwenden wollen; es ist jedoch hoch interessant, wenn Sie verstehen wollen, wie die größtenteils unkoordinierten Bemühungen von Menschen, die über die ganze Welt verstreut sind, zu einem funktionierenden, benutzbaren Stück Software verschmelzen. Und es ist natürlich Pflichtlektüre, wenn Sie einen Patch zu CVS einbringen wollen (sei es eine Fehlerbeseitigung oder eine neue Funktion).

HACKING - Trotz ihres Namens sagt die HACKING-Datei nicht viel über den Entwurf oder die Implementierung von CVS aus. Sie ist hauptsächlich eine Anleitung für Programmierstandards und andere technische "Administrativa" für Menschen, die darüber nachdenken, einen Patch für CVS zu schreiben. Sie kann als Ergänzung zur DEVEL-CVS-Datei angesehen werden. Nachdem Sie die grundlegende Philosophie der CVS-Entwicklung verstanden haben, müssen Sie die HACKING-Datei lesen, um dies in wirkliche Programmierpraktiken umzusetzen.

FAQ - Dies ist das Dokument, das die am häufigsten gestellten Fragen zu CVS enthält. Unglücklicherweise weist seine Betreuung einige Lücken auf. David Grubbs hat sich bis 1995 darum gekümmert, dann wurde er (vermutlich) zu beschäftigt, und es dümpelte eine Zeit lang vor sich hin. Schließlich übernahm 1997 Pascal Molli die Betreuung. Molli hatte auch nicht die Zeit, es von Hand zu betreuen, doch zumindest hat er Zeit dafür gefunden, es in sein automatisiertes FAQ-O-Matic-System einzubinden, das es der Öffentlichkeit erlaubt, die FAQ dezentralisiert zu verwalten (grundsätzlich kann jeder Einträge über ein Webformular ändern oder ergänzen). Dies war wahrscheinlich insoweit eine gute Sache, als dass die FAQ zumindest wieder betreut wurde; jedoch ist ihre gesamte Organisation und Qualitätskontrolle nicht auf demselben Niveau, wie wenn sie von einer Person betreut würde.

Die Hauptversion der FAQ ist immer auf Mollis Web-Server ( www.loria.fr/~molli/cvs-index.html, unter dem Link "Documentation") verfügbar. Die FAQ, die mit CVS-Distributionen mitgeliefert wird, wird automatisch aus dieser FAQ-O-Matic-Datenbank generiert, ist also bereits ein wenig veraltet, wenn sie die Öffentlichkeit erreicht. Dennoch kann sie durchaus hilfreich sein, wenn Sie nach Tips und Beispielen suchen, wie etwas Bestimmtes getan werden muss (z.B. das Wiedervereinigen eines großen Zweigs oder das Retten einer gelöschten Datei). Die beste Art, sie zu benutzen, ist als Referenzdokument; Sie können sie in Ihren bevorzugten Editor laden und nach den für Sie interessanten Themen suchen. Es wäre ein Fehler zu versuchen, sie als Tutorial zu verwenden - es fehlen zu viele wichtige Tatsachen über CVS, als dass sie als komplettes Handbuch dienen könnte.

#### 3.2 Unterverzeichnisse

Die CVS-Distribution enthält eine Reihe von Unterverzeichnissen. Im Rahmen einer normalen Installation müssen Sie nicht darin herumsuchen, wenn Sie aber im Quelltext wühlen möchten, ist es gut zu wissen, wofür jedes von ihnen gedacht ist. Hier sind sie:

    contrib/
    diff/
    doc/
    emx/
    lib/
    man/
    os2/
    src/
    tools/
    vms/
    windows-NT/
    zlib/

Der Großteil davon kann ignoriert werden. Die Verzeichnisse emx/, os2/, vms/ und windows-NT/ enthalten alle betriebssystemspezifischen Quelltext, den Sie nur brauchen würden, wenn Sie tatsächlich einen Fehler auf Quelltextebene in CVS beseitigen wollten (eine unwahrscheinliche Situation, die aber durchaus schon vorgekommen ist). Die diff/- und zlib/-Unterverzeichnisse enthalten die CVS-internen Implementationen des diff-Programms bzw. der GNU gzip-Kompressionsbibliothek (CVS benutzt letztere, um die Menge an Daten zu reduzieren, die beim Zugriff auf entfernte Archive gesendet werden müssen).

Die Unterverzeichnisse contrib/ und tools/ enthalten freie Software von Dritten, die dazu gedacht ist, mit CVS benutzt zu werden. In contrib/ finden Sie eine Ansammlung von kleinen spezialisierten Shell-Skripten (lesen Sie contrib/README, um herauszufinden, was sie tun). Das Unterverzeichnis tools/ enthielt früher von Dritten beigesteuerte Software, enthält nun aber nur eine README-Datei, die unter anderem besagt:

> Dieses Unterverzeichnis enthielt früher Werkzeuge, die zusammen mit CVS benutzt werden können. Im Besonderen enthielt es eine Kopie von pcl-cvs Version 1.x. Pcl-cvs ist eine Emacs-Schnittstelle für CVS. Wenn Sie pcl-cvs suchen, empfehlen wir pcl-cvs Version 2.x, zu finden unter: ftp://ftp.weird.com/pub/local/

Das hier erwähnte PCL-CVS-Paket ist sehr praktisch, und ich werde in Kapitel 10 mehr darüber schreiben.

Die Unterverzeichnisse src/ und lib/ enthalten den Großteil des CVS-Quelltexts, der die CVS-Interna betrifft. Die Hauptdatenstrukturen und Befehle sind in src/ implementiert, lib/ enthält kleine Quelltextmodule, die allgemein für CVS nützlich sind.

Das Unterverzeichnis man/ enthält die CVS-Man-Pages (elektronische Handbucheinträge, gedacht für das Unix Online-Handbuchsystem). Wenn Sie make install aufrufen, werden sie den Standard Man-Pages Ihres Unix-Systems hinzugefügt, so dass Sie

user@linux ~$ man cvs

eingeben können und eine recht knappe Einleitung und Unterbefehlsreferenz von CVS erhalten. Obwohl sie auch als schnelles Nachschlagewerk nützlich sind, kann es sein, dass die Man-Pages nicht so aktuell oder komplett wie das Cederqvist-Handbuch sind (siehe den nächsten Abschnitt); jedoch sind die Man-Pages eher unvollständig als tatsächlich falsch, falls Sie das irgendwie beruhigt.

Das Cederqvist-Handbuch

Übrig bleibt das doc/-Unterverzeichnis, dessen wichtigster Teil der berühmte Cederqvist ist. Heute ist es wahrscheinlich ein wenig weit hergeholt, es "den Cederqvist" zu nennen. Auch wenn Per Cederqvist (von Signum Support, Linkoping, Schweden) die erste Version um 1992 geschrieben hat, wurde es seitdem von vielen Menschen aktualisiert. Wenn Mitarbeiter zum Beispiel eine neue Funktionalität zu CVS hinzufügen, dokumentieren sie sie normalerweise auch im Cederqvist.

Das Cederqvist-Handbuch ist im Texinfo-Format verfasst, das vom GNU-Projekt verwendet wird, da es recht einfach ist, daraus sowohl Online- wie auch gedruckte Versionen zu erzeugen (im Info- bzw. PostScript-Format). Die Texinfo-Hauptdatei ist doc/cvs.texinfo, CVS-Distributionen kommen aber mit vorgenerierten Info- und PostScript-Dateien - Sie brauchen also nicht zu befürchten, die Texinfo-Werkzeuge selbst benutzen zu müssen.

Auch wenn der Cederqvist als Einführung und Tutorial verwendet werden kann, ist er wahrscheinlich als Referenzdokument am nützlichsten. Aus diesem Grund lesen ihn die meisten Menschen online, anstatt ihn auszudrucken (auch wenn die PostScript-Datei doc/cvs.ps ist, für Menschen mit zu viel Papier). Wenn Sie CVS zum ersten Mal auf Ihrem System installiert haben, dann müssen Sie einen zusätzlichen Schritt unternehmen, um sicherzustellen, dass das Handbuch öffentlich verfügbar ist.

Die Info-Dateien (doc/cvs.info, doc/cvs.info-1, doc/cvs-info.2 usw.) wurden für Sie installiert, als Sie make install aufriefen. Auch wenn die Dateien in den Info-Verzeichnisbaum Ihres Systems kopiert wurden, kann es sein, dass Sie noch eine Zeile hinzufügen müssen, um CVS in das Info-Inhaltsverzeichnis, den "obersten Knoten", aufzunehmen. (Dies ist nur notwendig, wenn CVS zum ersten Mal auf Ihrem System installiert wurde; sonst sollte der Eintrag bereits von einer früheren Installation her im Inhaltsverzeichnis enthalten sein).

Wenn Sie schon einmal neue Info-Dokumentation hinzugefügt haben, sind Sie vielleicht mit dem Vorgang vertraut. Finden Sie zuerst heraus. wo die Info-Seiten installiert wurden. Wenn Sie die Standardinstallation verwendet haben (in /usr/local/), finden sich die Info-Dateien in /usr/loal/info/cvs.info*. Wenn Sie mit

user@linux ~$ ./configure --prefix=/usr

installiert haben, finden sich die Dateien in /usr/info/cvs.*. Wenn Sie die Dateien gefunden haben, müssen Sie dem Info-Inhaltsverzeichnis, das eine Datei namens dir in diesem Verzeichnis ist, eine Zeile für CVS hinzufügen (im letzteren Fall wäre dies also /usr/info/dir). Wenn Sie keinen root-Zugriff haben, dann bitten Sie Ihren Systemverwalter darum. Hier ist ein Ausschnitt von dir vor dem Hinzufügen der CVS-Dokumentation:

dir

    * Bison: (bison). The Bison parser generator.
    * Cpp: (cpp). The GNU C preprocessor.
    * Flex: (flex). A fast scanner generator

Und hier ist der gleiche Bereich von dir danach:

dir

    * Bison: (bison). The Bison parser generator.
    * Cpp: (cpp). The GNU C preprocessor.
    * Cvs: (cvs). Concurrent Versions System
    * Flex: (flex). A fast scanner generator

Das Format der Zeile ist sehr wichtig. Sie müssen den Stern, Leerzeichen und den Doppelpunkt in "* Cvs:" verwenden und die Klammern und den Punkt in "(cvs)." danach. Wenn eines dieser Elemente fehlt, wird das Info-Verzeichnisformat gestört, und Sie können den Cederqvist nicht lesen.

Sobald das Handbuch installiert und vom Inhaltsverzeichnis aus referenziert wurde, können Sie es mit jedem Info-kompatiblen Browser lesen. Am wahrscheinlichsten existieren auf einem typischen Unix-System zum einen der Kommandozeilen Info-Browser, der folgendermaßen aufgerufen werden kann, wenn Sie direkt zu den CVS-Seiten gelangen wollen:

user@linux ~$ info cvs

und zum anderen der in Emacs enthaltene Browser, der durch M-X info oder C-h i aufgerufen werden kann.

Nehmen Sie sich so viel Zeit wie nötig, um den Cederqvist auf Ihrem System richtig einzurichten, wenn Sie CVS installieren; es wird sich später viele Male lohnen, wenn Sie irgendetwas nachschlagen müssen.

#### 3.3 Andere Informationsquellen

Zusätzlich zum Cederqvist, der FAQ und den anderen Dateien in der Distribution selbst gibt es CVS-spezifische Internet-Ressourcen. Wenn Sie einen CVS-Server administrieren wollen, sollten Sie wahrscheinlich die info-cvs-Mailingliste abonnieren. Dazu senden Sie eine E-Mail an info-cvs-request@gnu.org (die Liste selbst ist info-cvs@gnu.org). Das Nachrichtenaufkommen ist mit ca. zehn bis zwanzig E-Mails pro Tag mittel bis groß, die meisten davon sind von Menschen, die bestimmte Fragen haben. Der Großteil davon kann ungelesen gelöscht werden (außer wenn Sie ihnen helfen wollen, was immer nett ist), doch ab und zu kündigt jemand die Entdeckung eines Fehlers oder einen Patch an, der eine neue Funktionalität implementiert, die Sie sich gewünscht haben.

Sie können sich auch an der formalen Fehlerberichts-Mailingliste, die jeden eingesandten Fehlerbericht enthält, beteiligen. Dies ist wahrscheinlich nicht notwendig, außer Sie haben vor, bei der Behebung der Fehler mitzuhelfen, was großartig wäre - oder Sie sind fürchterlich paranoid und möchten über jedes Problem, das andere in CVS finden, Bescheid wissen. Wenn Sie daran teilnehmen wollen, senden Sie eine E-Mail an bug-cvs-request@gnu.org.

Es gibt auch eine Usenet-Newsgruppe, comp.software.config-mgmt, die Versionskontrolle und Konfigurationsmanagement allgemein behandelt und in der relativ viel über CVS diskutiert wird.

Zuletzt gibt es mindestens drei Webseiten, die sich mit CVS beschäftigen. Der Webserver von Cyclic Software, www.cyclic.com ist seit einigen Jahren die informelle Homepage von CVS und wird es wahrscheinlich auch auf absehbare Zeit bleiben. Cyclic Software stellt auch Serverplatz und Netzzugriff für das Archiv bereit, in dem sich die CVS-Quellen befinden. Die Webseiten von Cyclic enthalten umfassende Links zu experimentellen CVS-Patches, Werkzeuge von Dritten, die mit CVS zusammenarbeiten, Dokumentation, Mailinglisten-Archive und so ziemlich alles andere. Wenn Sie etwas, das Sie benötigen, nicht in der Distribution finden, ist www.cyclic.com der richtige Ort, um mit der Suche zu beginnen.

Zwei andere gute Server sind Pascal Mollis www.loria.fr/~molli/cvs-index.html und Sean Dreilingers http://durak.org/cvswebsites. Die größte Attraktion an Mollis Webseiten ist natürlich die FAQ, doch sie beinhalten auch Links zu CVS-bezogenen Werkzeugen und Mailinglisten-Archiven. Dreilingers Seiten sind auf Information zur Verwendung von CVS zur Verwaltung von Webdokumenten spezialisiert und haben auch eine CVS-spezifische Suchmaschine.