

	\documentclass[a4paper,11pt]{article}
	\usepackage{ngerman}
	\usepackage[latin1]{inputenc}
	\setlength\parskip{\medskipamount}
	\setlength\parindent{0pt}
	\begin{document}

	
 % CVS-Referenz
 % Copyright 
 % Lizenz: GPL
 % 
 % $Name: $
 % $Revision: 1.1.2.10 $
 % $Source: /cvsroot/selflinux/tutorial/software/development/version_control/cvs/cvs_buch/kapitel_9/kapitel_9,v $
 % SelfLinux-0.7.2
 %
 % Diese Datei ist Teil von SelfLinux http://www.selflinux.de
 %
 %%% $Id: kapitel_9,v 1.1.2.10 2002/12/15 18:47:30 fboerner Exp $

	\title{CVS-Referenz}


	
	    \author{}
	    %\url{mailto:}
    

	\maketitle

	
	
	%\ref{../index.tex}
	
		%\ref{programmierung.tex}
		Programmierung
		%\ref{cvs.tex}
		CVS
	\ref{CVS-Referenz}

    \par{Layout}
    Matthias Hagedorn
	    %\url{mailto:herbert-kw@t-online.de}
    
    	\par{Lizenz}
	GPL
 
	\tableofcontents{}

        
	\section{Organisation und Konventionen} \label{d78e56}
        

   

   
  \par
  
Dieses Kapitel ist eine vollständige Referenz für CVS-Kommandos,
Archivverwaltungsdateien, Schlüsselwortersetzung,
Laufzeit-Kontrolldateien, Arbeitskopien und Umgebungsvariablen -
alles, was in CVS Version 1.10.7 (genauer: Stand 20. August 1999)
enthalten ist.
   

   
  \par
  
Die Kommandos sind der wichtigste Teil jeder CVS-Referenz, also
beginnen wir damit:
   

  \section{Kommandos} \label{d78e70}
        

   

   
  \par
  
Dieser Abschnitt ist alphabetisch geordnet, um es einfacher für Sie zu
machen, einen bestimmten Befehl oder eine Option zu finden. Die
folgenden Konventionen werden verwendet:
   

   
  \par
  
Argumente zu Kommandos und Optionen sind in Großbuchstaben geschrieben
und kursiv in der Zusammenfassung, die jede Erklärung einleitet.
Optionale Teile werden in eckigen Klammern [] geschrieben. Wenn aus
einer Menge ausgewählt werden muss, werden die Möglichkeiten durch ein
Pipe-Symbol getrennt: {\bf x|y|z}. Der Plural oder Punktierung {\bf ...}
deuten auf mögliche Mehrfachoptionen hin, die üblicherweise durch
Leerzeichen getrennt sind. Zum Beispiel bedeutet DATEIEN eine oder
mehrere Dateien. Der Eintrag [\&MOD...] ist also ein Und-Zeichen, das
direkt von einem Modulnamen gefolgt wird, dann ein Leerzeichen und
dann evtl. noch ein Und-Zeichen mit Modulnamen und so weiter - kein
Mal oder häufiger. (Hier wurde die Punktierung verwendet, weil ein
Plural nicht eindeutig ausgesagt hätte, ob das Und-Zeichen nur beim
ersten Modul notwendig ist oder bei allen.) Wenn ein Plural in
Klammern steht, wie beispielsweise bei DATEI(EN), dann bedeutet das,
dass hier zwar mehrere Argumente stehen können, üblicherweise aber nur
eines verwendet wird. REV wird oft als Platzhalter für einen
Revisionsbezeichner verwendet. Letzterer ist üblicherweise lediglich
eine Revisionsnummer oder ein Bezeichner. In ganz seltenen Fällen ist
es möglich, dass nur die eine oder die andere Variante verwendet
werden kann, aber diese Fälle werden im Text besonders angemerkt.
   

  \section{Typische Eigenschaften von CVS-Kommandos} \label{d78e90}
        

   

   
  \par
  
CVS-Kommandos setzen sich wie folgt zusammen:
   

   
  \par
  
{\bf cvs [GLOBALE\_OPTIONEN] KOMMANDO [OPTIONEN] [DATEIEN]}
   

   
  \par
  
Der zweite Satz von Optionen wird bisweilen {\bf Kommandooptionen}
genannt. Weil es aber so viele davon gibt, werden sie hier
üblicherweise nur {\bf Optionen} genannt, um etwas Platz zu sparen.
   

   
  \par
  
Viele Kommandos sind dazu gedacht, in einer Arbeitskopie angewendet zu
werden, und können daher ohne Dateiargument ausgeführt werden. Diese
Kommandos beziehen sich dann standardmäßig auf das derzeitige
Verzeichnis und alle darin enthaltenen Verzeichnisse. Wenn ich mich
also im Text auf die {\bf Datei} oder {\bf Dateien} beziehe, dann ist die
Rede von den Dateien, auf denen CVS-Operationen ausführt. Je nachdem,
wie Sie CVS aufgerufen haben, können diese Dateien also in der
Kommandozeile aufgeführt sein oder auch nicht.
   

   \subsection{Datumsformate} \label{d78e124}
        

    

    
  \par
  
Viele Optionen benötigen ein Datumsargument. CVS akzeptiert eine große
Menge an unterschiedlichen Datumsformaten - zu viele, um sie hier
aufzulisten. Im Zweifelsfall halten Sie sich an das ISO 8601-Format:
    

    
  \par
  
{\bf 1999-08-23}
    

    
  \par
  
Das bedeutet 23. August 1999 (genau genommen ist {\bf 23 August 1999}
ebenfalls eine absolut gültige Datumsbezeichnung, solange Sie nicht
vergessen, sie in Anführungszeichen zu setzen). Wenn Sie außerdem
eine Tageszeit angeben müssen, dann geht das so:
    

    
  \par
  
{\bf ''1999-08-23 21:20:30 CET''}
    

    
  \par
  
Sie können sogar übliche englische Wörter als Zeitangabe einsetzen,
wie zum Beispiel {\bf now} (jetzt), {\bf yesterday} (gestern) oder sogar {\bf 12
days ago}(vor 12 Tagen). Im Allgemeinen können Sie gefahrlos mit
Datumsformaten experimentieren; wenn CVS Ihre Datumsangabe überhaupt
versteht, dann mit großer Wahrscheinlichkeit auch so, wie Sie es sich
gedacht haben. Wenn nicht, dann wird der Befehl mit einer
Fehlermeldung beendet.
    

   
  \section{Globale Optionen} \label{d78e169}
        

   

   
  \par
  
Hier folgt eine Liste aller globalen Optionen für CVS
   

   \subsection{--allow-root=ARCHIV} \label{d78e179}
        
    

    
  \par
  
Die alphabetisch erste globale Option, die praktisch nie auf der
Kommandozeile verwendet wird. Sie wird mit dem {\bf pserver}-Kommando zum
Aufbau eines authentifizierten Zugriffes zu dem angegebenen Archiv
verwendet. Dabei handelt es sich um das Hauptverzeichnis eines
Archivs, (wie {\bf /usr/local/cvsarchiv/}), nicht um ein Unterverzeichnis
(wie {\bf /usr/local/cvsarchiv/projekt}). Normalerweise ist die einzige
Stelle, an der diese Option überhaupt vorkommt in der Datei
{\bf /etc/inetd.conf} (siehe Kapitel 4), genau wie das mit ihr verwendete
{\bf pserver} Kommando. Jedes Archiv, auf das mit {\bf cvs pserver} auf einem
bestimmten Rechner zugegriffen wird, benötigt eine entsprechende
{\bf --allow-root}-Option in {\bf /etc/inetd.conf}. Dies ist eine
Sicherheitsmaßnahme, die gewährleisten soll, dass niemand mittels
eines {\bf cvs pserver}-Kommandos Zugriff auf private Archive erlangen
kann. (Siehe auch den Abschnitt {\bf Password Authentication Server} im
Cederqvist.)
    

   

   \subsection{-a} \label{d78e218}
        
    

    
  \par
  
Authentifiziert jede Kommunikation mit dem Server. Diese Option hat
keinen Effekt, solange Sie nicht mittels {\bf GSSAPI}-Server (gserver)
Verbindungen aufbauen. {\bf GSSAPI}-Verbindungen sind in diesem Buch nicht
behandelt, weil sie noch immer relativ selten anzutreffen sind (auch
wenn sich das ändern könnte). Siehe auch die Abschnitte {\bf Global
Options} und {\bf GSSAPI Authenticated} im Cederqvist für mehr
Information zu diesem Thema.
    

   

   \subsection{-b (Überholt)} \label{d78e242}
        
    

    
  \par
  
Diese Option wurde früher dazu verwendet anzugeben, in welchem
Verzeichnis sich die {\bf RCS}-Programmdateien befanden. CVS implementiert
inzwischen jedoch intern die {\bf RCS}-Funktionen, sodass diese Option nur
noch aus Gründen der Kompatibilität beibehalten wird. Sie hat
keinerlei Wirkung mehr.
    

   

   \subsection{-d ARCHIV} \label{d78e257}
        
    

    
  \par
  
Diese Option gibt das Archiv an. ARCHIV kann entweder einfach ein
absoluter Pfad oder ein komplexerer Ausdruck sein, der eine
Verbindungsmethode, einen Benutzer- und Rechnernamen sowie einen Pfad
enthält. In letzterem Fall sieht die generelle Ausdrucksform so aus:
    

    
  \par
  
{\bf :METHODE:BENUTZER@RECHNER:PFAD\_ZUM\_ARCHIV}
    

    
  \par
  
Hier ein paar Beispiele zu den üblichen Verbindungsarten:
    

    
  \par
  
{\bf :ext:jrandom@floss.red-bean.com:/usr/local/archiv} \linebreak 
- Baut eine Verbindung unter Verwendung von {\bf rsh}, {\bf ssh} oder eines anderen externen
Programmes auf. Falls die {\bf CVS\_RSH}-Umgebungsvariable nicht gesetzt
ist, ist die Standardeinstellung {\bf rsh}, ansonsten wird der Wert dieser
Variablen verwendet.
    

    
  \par
  
{\bf :server:jrandom@floss.red-bean.com:/usr/local/archiv} \linebreak 
- Wie {\bf :ext:}, nutzt aber die interne {\bf rsh}-Variante von CVS. (Diese Option ist möglicherweise nicht auf allen Plattformen verfügbar.)
    

    
  \par
  
{\bf :pserver:jrandom@floss.red-bean.com:/usr/local/archiv} \linebreak 
- Baut mit Hilfe des Passwortauthentifizierungs-Servers eine Verbindung auf (siehe {\bf Der Passwortauthentifizierungs-Server} in Kapitel 4; siehe auch das {\bf login}-Kommando).
    

    
  \par
  
{\bf :kserver:jrandom@floss.red-bean.com:/usr/local/archiv} \linebreak 
- Baut eine Verbindung mit Hilfe der Kerberos-Authentifizierung auf.
    

    
  \par
  
{\bf :gserver:jrandom@floss.red-bean.com:/usr/local/archiv} \linebreak 
- Baut eine Verbindung unter Verwendung der {\bf GSSAPI}-Authentifizierung auf.
    

    
  \par
  
{\bf :fork:jrandom@floss.red-bean.com:/usr/local/archiv} \linebreak 
- Baut eine Verbindung zu einem lokalen Archiv auf, benutzt aber das
{\bf Client/Server}-Protokoll, anstatt direkt auf die Dateien zuzugreifen.
Dies kann nützlich sein, um das Verhalten einer CVS-Konfiguration im
Netz auf dem eigenen Rechner zu testen und Fehler zu suchen.
    

    
  \par
  
{\bf :local:jrandom@floss.red-bean.com:/usr/local/newrepos} \linebreak 
- Greift direkt auf ein lokales Archiv zu, so als wäre nur der absolute Pfad angegeben
worden.
    

   

   \subsection{-e EDITOR} \label{d78e354}
        
    

    
  \par
  
Startet EDITOR für Ihre {\bf commit}-Mitteilung, falls diese
nicht auf der Kommandozeile mit der {\bf -m}-Option angegeben wurde.
Normalerweise startet CVS den Editor abhängig vom Inhalt der
Umgebungsvariablen CVSEDITOR, VISUAL oder EDITOR (in dieser
Reihenfolge), falls keine Mitteilung mit {\bf -m} angegeben wird. Falls
alles schief geht, versucht CVS, den verbreiteten Unix-Editor {\bf vi} zu
starten. Wenn Sie sowohl {\bf -e} also auch {\bf -m} mit {\bf commit} verwenden, wird
das {\bf -e} zu Gunsten der bei {\bf -m} angegebenen Mitteilung ignoriert. (Daher
ist es unproblematisch, {\bf -e} in einer {\bf .cvsrc}-Datei zu verwenden.)
    

   

   \subsection{-f} \label{d78e396}
        
    

    
  \par
  
Diese globale Option unterbindet das Lesen der {\bf .cvsrc}-Datei.
    

   

   \subsection{--help [KOMMANDO]} \label{d78e408}
        
    
   

   \subsection{-H [KOMMANDO]} \label{d78e414}
        
    

    
  \par
  
Diese beiden Optionen bewirken dasselbe. Sollte kein KOMMANDO
angegeben sein, dann wird in einer kurzen Ausgabe die Bedienung der
Grundfunktionen erläutert.
    
   

   \subsection{--help-options} \label{d78e423}
        
    

    
  \par
  
Gibt eine Liste aller verfügbaren Optionen für CVS samt kurzer
Erklärung aus.
    
   

   \subsection{--help-synonyms} \label{d78e432}
        
    

     
  \par
  
Gibt eine Liste aller CVS-Kommandos und ihrer Kurzformen ({\bf up} für
{\bf update} usw.) aus.
     

   

   \subsection{-l} \label{d78e447}
        
    

    
  \par
  
Unterdrückt das Mitschneiden dieses Kommandos in die
{\bf CVSROOT/history}-Datei im Archiv. Das Kommando wird zwar ausgeführt,
aber es wird kein Eintrag in der {\bf History}-Datei erzeugt.
    

   

   \subsection{-n} \label{d78e462}
        
    

    
  \par
  
Ändert keine Datei in der Arbeitskopie oder im Archiv. Mit anderen
Worten, diese Option führt zu einer Art Testlauf, in dem CVS zwar fast
alle Kommandos abarbeitet, aber nichts wirklich verändert. Das kann
nützlich sein, wenn Sie sehen wollen, was ein Kommando bewirkte, wenn
Sie es tatsächlich anwenden würden. Ein übliches Szenario ist, wenn
Sie sehen möchten, welche Dateien in Ihrem Arbeitsverzeichnis
inzwischen verändert wurden, diese aber noch nicht aktualisieren
möchten (was die Veränderungen aus dem Archiv in Ihre Dateien
übertragen würde). Durch die Ausführung des Kommandos {\bf cvs -n update}
können Sie so eine Zusammenfassung der Veränderungen angezeigt
bekommen, ohne Ihre Arbeitskopie der Daten anzutasten.
    

   

   \subsection{-q} \label{d78e474}
        
    

    
  \par
  
Diese Option befiehlt CVS, etwas {\bf leiser} zu arbeiten und unnötige
Informationen nicht auszugeben. Was als notwendig angesehen wird,
hängt hierbei von dem Kommando ab. Zum Beispiel werden bei der
Aktualisierung die Nachrichten unterdrückt, die CVS normalerweise
ausgibt, wenn es in ein neues Unterverzeichnis der Arbeitskopie
eintritt - die einzeiligen Statusmeldungen über veränderte oder
aktualisierte Dateien werden jedoch trotzdem angezeigt.
    

   

   \subsection{-Q} \label{d78e486}
        
    

    
  \par
  
Wie {\bf -q}, nur dass CVS hier lediglich die allernötigsten Informationen
ausgibt. Kommandos, deren einziger Zweck es ist, Ausgaben zu erzeugen
(wie z.B. {\bf diff} und {\bf annotate}), werden davon natürlich nicht
beeinflusst. Hingegen geben Befehle, die unabhängig von irgendwelchen
Ausgaben ihre Aufgabe erfüllen können (wie z.B. {\bf update} und {\bf commit}),
nichts aus.
    

   

   \subsection{-r} \label{d78e510}
        
    

    
  \par
  
Bewirkt, dass neue Arbeitsdateien ohne Schreibzugriff erzeugt
werden (hat also dieselbe Wirkung wie die CVSREAD-Umgebungsvariable).
Wenn Sie diese Option verwenden, werden bei Dateneinspielungen und
-aktualisierungen die Dateien in Ihrer Arbeitskopie als nur lesbar
markiert (sofern Ihr Betriebssystem diese Option unterstützt). Genau
genommen habe ich keine Ahnung, warum je jemand diese Option verwenden
sollte.
    

   

   \subsection{-s VARIABLE=WERT} \label{d78e519}
        
    

    
  \par
  
Hiermit wird die interne CVS-Variable namens VARIABLE auf den Wert
WERT gesetzt. Auf der Seite des Archivs können die
{\bf CVSROOT/*info}-Kontrolldateien solche Variablen in Werte übersetzen,
die mit der {\bf -s}-Option gesetzt wurden. Wenn zum Beispiel die Datei
{\bf CVSROOT/loginfo} eine Zeile wie diese enthält
    

    
     \begin{tt} \begin{scriptsize} myproj /usr/local/bin/foo.pl \${=FISCH}\end{scriptsize} \end{tt} \linebreak
    

    
  \par
  
und dann jemand ein {\bf commit} von myproj wie folgt startet
    

    
     \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs -s FISCH=Karpfen commit -m ''Köder-Bug behoben''
      \end{scriptsize} \end{tt} \linebreak 
    

    
  \par
  
dann wird das Skript {\bf foo.pl} mit {\bf Karpfen} als Argument gestartet. Man
beachte jedoch die schräge Syntax: Das Dollarzeichen, die geschweifte
Klammer und das Gleichheitszeichen - fehlt eines der drei, dann
funktioniert die Zuweisung nicht korrekt. Variablennamen dürfen
lediglich Buchstaben, Zahlen und Unterstriche enthalten. Obwohl es
nicht unbedingt erforderlich ist, dass alle Buchstaben groß
geschrieben werden, scheinen sich doch die meisten Leute an diese
Konvention zu halten. Das {\bf -s}-Flag kann in einem Kommando beliebig oft
hintereinander verwendet werden. Falls sich jedoch eines der
Kontrollskripten auf Variablen bezieht, die nicht beim Aufruf gesetzt
wurden, dann wird zwar das Skript ausgeführt, aber eine Warnung an den
Benutzer ausgegeben und keiner einzigen Variablen ihr Wert
zugewiesen. Wenn zum Beispiel in {\bf loginfo} Folgendes steht
    

    
     \begin{tt} \begin{scriptsize} myproj /usr/local/bin/foo.pl \${=FISCH} \${=VOGEL}\end{scriptsize} \end{tt} \linebreak
    

    
  \par
  
aber derselbe Befehl wie vorhin ausgeführt wird
    

    
     \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs -s FISCH=Karpfen commit -m ''Köder-Bug behoben''
      \end{scriptsize} \end{tt} \linebreak 
    

    
  \par
  
dann bekommt der Benutzer, der den Befehl gestartet hat, eine Warnung wie
    

    
     \begin{tt} \begin{scriptsize} loginfo:31: no such user variable \${=BIRD}\end{scriptsize} \end{tt} \linebreak
    

    
  \par
  
und das Skript {\bf foo.pl} wird ohne Argumente ausgeführt. Wenn das
Kommando jedoch so aussieht:
    

    
     \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs -s FISCH=Karpfen -s VOGEL=Geier commit -m ''Köder-Bug behoben''
      \end{scriptsize} \end{tt} \linebreak 
    

    
  \par
  
dann wird keine Warnung ausgegeben, und {\bf foo.pl} wird wie erwartet mit
den Argumenten Karpfen und Geier aufgerufen. In beiden Fällen würde
der {\bf Commit} selbst korrekt durchgeführt.
    


    
  \par
  
Bemerkung
    

    
Obwohl all diese Beispiele {\bf commit} verwenden, kann die Zuweisung von
Variablen mit jedem CVS-Kommando geschehen, das eine {\bf CVSROOT/}
Kontrolldatei auslöst - darum ist {\bf -s} eine globale Option.
    

    
(Siehe auch den Abschnitt Archivverwaltungsdateien weiter hinten in
diesem Kapitel zur Expansion von Variablen in Kontrolldateien.)
    

   

   \subsection{-T DIR} \label{d78e633}
        
    

    
  \par
  
Speichert alle temporären Dateien in DIR anstatt da, wo CVS sie
normalerweise ablegt. (Dies überschreibt im Besonderen den Wert der
Umgebungsvariablen TMPDIR, falls sie existiert.) DIR sollte ein
absoluter Pfad sein. Diese Option ist nützlich, falls Sie als Benutzer
keinen Schreibzugriff auf die üblichen temporären Verzeichnisse
besitzen.
    

   

   \subsection{-t} \label{d78e642}
        
    

    
  \par
  
Verfolgt die Durchführung eines CVS-Kommandos. Dies veranlasst CVS
genau alle Schritte anzuzeigen, die es durchführt, um einen Befehl
auszuführen. Das kann sich besonders im Zusammenhang mit der Option
{\bf -n} als nützlich erweisen, damit Sie sich so im Detail die Effekte
eines ungewöhnlichen Befehles im Voraus ansehen können, ohne ihn
wirklich auszuführen. Die Option ist ebenfalls praktisch, um
herauszufinden, warum ein Kommando nicht funktioniert.
    

   

   \subsection{-v --version} \label{d78e654}
        
    

    
  \par
  
Veranlasst CVS, seine vollständige Version und Urheberrechtsangaben auszugeben.
    

   

   \subsection{-w} \label{d78e663}
        
    

    
  \par
  
Bewirkt, dass neue Arbeitsdateien mit Schreibzugriff ausgestattet
werden (überschreibt damit jeden Wert, den eventuell die
Umgebungsvariable CVSREAD haben könnte). Weil normalerweise sowieso
alle Dateien mit Schreibzugriff versehen werden, wird diese Option nur
selten benutzt.
    

    
  \par
  
Werden beide Optionen, {\bf -r} und {\bf -w}, angegeben, so gilt die {\bf -w}-Option.
    

   

   \subsection{-x} \label{d78e684}
        
    

    
  \par
  
Verschlüsselt jede Kommunikation mit dem Server. Diese Option hat
keine Wirkung, solange nicht eine Verbindung via GSSAPI zum Server
(gserver) besteht. GSSAPI-Verbindungen werden in diesem Buch nicht
behandelt, weil sie immer noch eher selten benutzt werden - obwohl
sich das ändern könnte). (Siehe auch die Abschnitte {\bf Global Options}
und {\bf GSSAPI Authenticated} im Cederqvist mit mehr Informationen zu
dieser Thematik.)
    

   

   \subsection{-z GZIPLEVEL} \label{d78e702}
        
    

    
  \par
  
Stellt die Stärke der Datenkompression für die Verbindungen zum Server
ein. Das Argument GZIPLEVEL muss eine Zahl zwischen eins und neun
sein. Eins steht für minimale Kompression (dafür schnell); neun
hingegen hat nur auf sehr schnellen Rechnern oder sehr langsamen
Verbindungen Sinn (komprimiert sehr stark, braucht aber viel
Rechenzeit). Die meisten Benutzer dürften Werte zwischen drei und
fünf praktikabel finden. Das Leerzeichen zwischen {\bf -z} und seinem
Argument ist optional.
    

   
  \section{Liste der Befehle} \label{d78e718}
        

   

   
  \par
  
m Folgenden eine Liste aller CVS-Befehle
   

   \subsection{add [OPTIONS] FILES} \label{d78e728}
        
    

    
  \par
  
Alternativen: ad, new \linebreak 
Erfordert: Arbeitskopie, Archiv \linebreak 
Ändert: Arbeitskopie \linebreak 
    

    
  \par
  
Fügt eine neue Datei einem existierenden Projekt hinzu. Obwohl das
Archiv zur Bestätigung kontaktiert wird, wird die Datei dem Archiv
nicht wirklich hinzugefügt, bis später {\bf commit} ausgeführt wird. (Siehe
auch {\bf remove} und {\bf import}.)
    

    
  \par
  
Optionen:
    

    \begin{list}{*}{}
     
	\item 
{\bf -k METHODE}
     

     \begin{list}{*}{}
      
	\item 
Spezifiziert, dass die Datei mit der angegebenen Methode zur
Schlüsselwortersetzung abgespeichert werden soll. Zwischen {\bf -k} und dem
Argument ist kein Leerzeichen. (Für eine Liste gültiger Methoden und
Beispiele siehe auch den Abschnitt {\bf Schlüsselwortersetzung} weiter
hinten in diesem Kapitel.)
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -m MITTEILUNG}
     

     \begin{list}{*}{}
      
	\item 
Vermerkt MITTEILUNG als ersten Eintrag zur Entstehung bzw.
Beschreibung der Datei. Diese unterscheidet sich von dem Log-Eintrag
bei späteren Revisionen - jede Datei hat nur genau eine Beschreibung.
Die Beschreibung ist optional.
      
     \end{list}
    \end{list}
    
  \par
  
Bemerkung:
    

    
In Version 1.10.7 gibt es einen Fehler in CVS, der zum Verlust der
Beschreibung führt, wenn eine Datei mittels Client/Server CVS
hinzugefügt wird. Alle anderen Funktionen des {\bf add}-Kommandos werden
trotzdem einwandfrei ausgeführt, falls das ein Trost sein sollte.
    

   

   \subsection{admin [OPTIONEN] [DATEIEN]} \label{d78e803}
        
    

    
  \par
  
Alternativen: adm, rcs \linebreak 
Erfordert: Arbeitskopie, Archiv \linebreak 
Ändert: Archiv \linebreak 
    

    
  \par
  
Dieses Kommando fungiert als Schnittstelle zu diversen administrativen
Aufgaben - um genau zu sein Aufgaben, die sich auf einzelne
RCS-Dateien innerhalb des Archivs beziehen, wie zum Beispiel die
Veränderung der Schlüsselwortersetzungs-Methode oder die Veränderung
einer Log-Mitteilung, nachdem diese bereits per {\bf commit} gespeichert
wurden.
    

    
  \par
  
Obwohl {\bf admin} rekursiv arbeitet, sofern keine Dateiargumente übergeben
wurden, ist es in den meisten Fällen sinnvoller, Dateien konkret zu
spezifizieren. Es hat nur selten Sinn, einen {\bf admin}-Befehl auf alle
Dateien eines Projektes oder auch nur eines ganzen Verzeichnisses
anzuwenden. Dementsprechend beziehen sich alle Erklärungen, die mit
einer {\bf Datei} zu tun haben, im Folgenden auf die im Befehl angegebene
Datei, manchmal Dateien.
    

    
  \par
  
Bemerkung:
    

    
Falls es auf dem Rechner mit dem Archiv eine Benutzergruppe namens
{\bf cvsadmin} gibt, so dürfen nur zu dieser Gruppe gehörige Benutzer das
{\bf admin}-Kommando ausführen. (Ausnahme: {\bf cvs admin -k} ist für alle
erlaubt.) So können Sie admin für alle Benutzer sperren, indem Sie
diese Gruppe leer lassen.
    

    
  \par
  
Optionen:
    

    \begin{list}{*}{}
     
	\item 
{\bf -AALTE\_DATEI (Überholt)}
     

     \begin{list}{*}{}
      
	\item 
Hängt die RCS-Zugriffsliste der Datei ALTE\_DATEI an die Zugriffsliste
der behandelten Datei an. CVS ignoriert RCS-Zugriffslisten, daher ist
diese Option nutzlos.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -a BENUTZER1 [,BENUTZER2...] (Überholt)}
     

     \begin{list}{*}{}
      
	\item 
Hängt die BENUTZER in der durch Kommata separierten Liste der
Zugriffsliste der behandelten Datei an. Wie {\bf -A} ist auch diese Option
wirkungslos.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -bREV}
     

     \begin{list}{*}{}
      
	\item 
Setzt die Revision des Standardverzeichnisbaumes der Datei
(üblicherweise des Wurzelverzeichnisses) auf REV. Normalerweise
werden Sie diese Option nicht benötigen, da Sie die Revisionen, die
Sie benötigen, über bindende Markierungen erhalten, aber Sie könnten
Sie verwenden, um zu einer Vertriebsversion zurückzukehren, falls
Sie entsprechende Archivbereiche führen. Es sollte sich zwischen {\bf -b}
und seinem Argument kein Leerzeichen befinden.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -cKOMMENTAR\_PREFIX (Überholt)}
     

     \begin{list}{*}{}
      
	\item 
Setzt das Kommentarzeichen der Datei auf KOMMENTAR\_PREFIX. Dieses wird
weder von CVS noch von aktuellen RCS-Versionen verwendet. Diese
Option ist daher wirkungslos.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -eBENUTZER1 [,BENUTZER2...] (Überholt)}
     

     \begin{list}{*}{}
      
	\item 
Gegenstück zu {\bf -a}: Entfernt Benutzernamen aus der Zugriffsliste. Ebenso
wirkungslos wie {\bf -a} und {\bf -A}.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -i oder -I (Überholt)}
     

     \begin{list}{*}{}
      
	\item 
Diese beiden sind so alt und überholt, dass ich nicht einmal auf ihre
frühere Bedeutung eingehe. Neugierige mögen den Cederqvist befragen.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -kMETHODE}
     

     \begin{list}{*}{}
      
	\item 
Setzt die Methode der Schlüsselwortersetzung für die Datei auf
METHODE. Diese Option verhält sich wie die {\bf -k}-Option des {\bf add}-Befehls,
nur dass man hier die Methode ändern kann, nachdem die Datei dem
Archiv hinzugefügt wurde. (Siehe auch den Abschnitt zur
Schlüsselwortersetzung weiter hinten in diesem Kapitel.) Zwischen {\bf -k}
und seinem Argument darf sich kein Leerzeichen befinden.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -L}
     

     \begin{list}{*}{}
      
	\item 
Setzt das Locking der Datei auf {\bf strikt} (siehe {\bf -l}).
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -l[REV]}
     

     \begin{list}{*}{}
      
	\item 
Legt die Revision der Datei auf REV fest. Fehlt REV, so wird die
neueste verfügbare Revision auf dem Hauptentwicklungszweig gehalten.
Wenn REV ein Zweig des Archivs ist, so wird die aktuellste Revision in
diesem Zweig des Archivs festgehalten ({\bf Locking}). Der Zweck dieser
Option ist, Ihnen eine Möglichkeit zu geben, {\bf reservierte {\bf Checkouts}}
zu machen, bei denen nur ein Benutzer auf einmal die Datei bearbeiten
kann. Ich bin nicht sicher, wie nützlich diese Option wirklich ist,
aber wenn Sie sie ausprobieren möchten, sollten Sie das eventuell in
Verbindung mit dem {\bf rcslock.pl}-Skript aus dem {\bf contrib/}-Verzeichnis der
CVS Quelltextdistribution machen. Siehe auch die Kommentare in jener
Datei für weitere Informationen. Unter anderem weisen diese Kommentare
darauf hin, dass das Locking auf strikt gesetzt werden muss (siehe
{\bf -L}). Zwischen {\bf -l} und dem Argument ist kein Leerzeichen.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -mREV:MITTEILUNG}
     

     \begin{list}{*}{}
      
	\item 
Ändert die Log-Mitteilung für die Revision REV auf MITTEILUNG. Sehr
praktisch - neben {\bf -k} ist dies die wohl meist genutzte Option zu {\bf admin}.
Es sind keine Leerzeichen vor dem Argument oder um den Doppelpunkt
herum gestattet. Natürlich darf MITTEILUNG trotzdem Leerzeichen
enthalten (dann aber bitte die MITTEILUNG in Anführungszeichen setzen,
damit die Shell nicht durcheinander kommt!).
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -NNAME[:[REV]]}
     

     \begin{list}{*}{}
      
	\item 
Wie {\bf -n}, nur dass es das Überschreiben jeder existierenden Zuweisung
des symbolischen Namens NAME erzwingt, anstatt mit einer Fehlermeldung
auszusteigen.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -nNAME[:[REV]]}
     

     \begin{list}{*}{}
      
	\item 
Es handelt sich hier um eine allgemeine Schnittstelle zur Zuweisung,
Umbenennung und zum Löschen von Markierungen. Soweit ich das
beurteilen kann, gibt es keinen Grund, diese Option dem {\bf tag}-Kommando
und seinen vielfältigen Optionen vorzuziehen ({\bf -d}, {\bf -r}, {\bf -b}, {\bf -f} usw.).
Ich empfehle daher die Benutzung des {\bf tag}-Befehls. Der NAME und die
Optionale REV können sich auf folgende Arten zusammensetzen:
      

      
	\item 
Falls nur das NAME-Argument angegeben wurde, wird der symbolische Name
(tag) namens NAME gelöscht. Falls NAME: angegeben wurde, aber kein
REV, so wird NAME der aktuellsten Revision des
Standardverzeichnisbaumes (üblicherweise der Hauptentwicklungslinie)
zugewiesen. Falls NAME:REV gegeben ist, wird NAME der Revision
zugeordnet. REV kann wiederum ein symbolischer Name sein, dann wird es
zunächst in eine Revisionsnummer übersetzt (kann auch die Nummer einer
abgezweigten Version sein). Falls REV die Nummer einer abgezweigten
Version ist und ein Punkt folgt ({\bf .}), dann wird NAME der aktuellsten
Revision auf dieser abgezweigten Version zugewiesen. Ist REV nur \$,
dann wird NAME den Revisionsnummern zugeordnet, die in den
Schlüsselwörtern der behandelten Datei(en) gefunden werden.
      

      
	\item 
In allen Fällen, in denen ein Name zugewiesen wird, beendet sich CVS
mit einer Fehlermeldung, sofern schon eine Marke namens NAME in der
Datei existiert. (Ausnahme: siehe {\bf -N}.) Es sind keine Leerzeichen
zwischen {\bf -n} und seinen Argumenten.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -oBEREICH}
     

     \begin{list}{*}{}
      
	\item 
Löscht die Revisionen, die durch BEREICH spezifiziert werden (auch
bekannt als {\bf Outdating}, daher {\bf -o}). BEREICH kann wie folgt angegeben
werden:
      

      \begin{list}{*}{}
       
	\item 
{\bf REV1::REV2} \linebreak 
- Vernichtet alle Revisionen zwischen REV1 und REV2, sodass
in der Revisionshistorie REV2 direkt auf REV1 folgt. Nach dieser
Aktion sind alle Versionen dazwischen nicht mehr existent, und es gibt
einen Sprung in der Folge der Revisionen.
       

       
	\item 
{\bf ::REV} \linebreak 
- Löscht alle Revisionen vom Anfang dieser abgezweigten Version
(die auch die Hauptentwicklungslinie sein kann) bis hin zu REV,
natürlich nicht inklusive REV. Danach ist REV die erste Revision in
diesem Bereich.
       

       
	\item 
{\bf REV::} \linebreak 
- Schreddert alle Revisionen, die in dieser abgezweigten Version
(die auch die Hauptentwicklungslinie sein kann) auf REV folgen. REV
ist dann die letzte Revision in diesem Bereich.
       

       
	\item 
{\bf REV} \linebreak 
- Löscht Revision REV. ({\bf -o1.8} wäre äquivalent zu {\bf -o1.7::1.9.})
       

       
	\item 
{\bf REV1:REV2} \linebreak 
- Löscht von REV1 bis REV2 inklusive! Sie müssen im selben
Entwicklungszweig sein. Danach ist es unmöglich, auf REV1, REV2 und
alle Revisionen dazwischen zuzugreifen.
       

       
	\item 
{\bf :REV} \linebreak 
- Löscht Revisionen vom Anfang des Entwicklungszweiges bis REV
inklusive. (Siehe vorhergehende Warnung.)
       

       
	\item 
{\bf REV:} \linebreak 
- Löscht beginnend mit REV bis zum Ende der abgezweigten Version
inklusive. (Siehe vorhergehende Warnung.)
       
      \end{list}
     \end{list}
    \end{list}

    
  \par
  
Bemerkung:
    

    
Keine der zu löschenden Revisionen darf Entwicklungszweige oder Locks
haben. Sollten irgendwelchen der betroffenen Revisionen symbolische
Namen zugewiesen sein, müssen diese zunächst mit {\bf tag -d} oder {\bf admin -n}
gelöscht werden. (Genau genommen schützt CVS momentan nur dann gegen
das Löschen symbolisch benannter Revisionen, wenn die {\bf ::}-Notation
verwendet wird, aber die {\bf :}-Notation könnte sich diesem Verhalten
bald anpassen.)
    

    
Anstatt diese Option zu nutzen, um ein fehlerhaftes {\bf Commit} zu löschen,
sollten Sie eine neue Version per {\bf Commit} in das Archiv bringen, welche
die fehlerhafte Änderung wieder in Ordnung bringt. Es gibt keine
Leerzeichen zwischen {\bf -o} und seinen Argumenten.
    

    \begin{list}{*}{}
     
	\item 
{\bf -q}
     

     \begin{list}{*}{}
      
	\item 
Stellt CVS ruhig - keine unnötigen Mitteilungen werden generiert
(genau wie mit der globalen Option {\bf -q}).
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -sSTATUS[:REV]}
     

     \begin{list}{*}{}
      
	\item 
Setzt das Statusattribut der Revision REV auf STATUS. Wird REV
weggelassen, so wird die aktuellste Revision des
Hauptentwicklungszweiges angenommen. Ist REV eine Markierung oder
Nummer einer abgezweigten Version, dann wird die aktuellste Revision
auf dieser abgezweigten Version verwendet. Beliebige Buchstaben- oder
Nummernfolgen für STATUS werden akzeptiert. Einige übliche
Statusbezeichnungen sind Exp für experimentell, Stab für stabil und
Rel für released (veröffentlicht). (Tatsächlich setzt CVS den Status
automatisch auf Exp, wenn eine Datei neu erzeugt wird.) Beachten Sie,
dass CVS die Statusbezeichnung dead für eigene Zwecke verwendet, also
geben Sie diese bitte nicht an. Statusinformationen werden in der {\bf cvs
log}-Ausgabe sowie in den {\bf \$Log-} und {\bf \$State-RCS}-Schlüsselwörtern in
Dateien ausgegeben. Zwischen {\bf -s} und seinem Argument sind keine
Leerzeichen.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -t[BESCHREIBUNGSDATEI]}
     

     \begin{list}{*}{}
      
	\item 
Ersetzt die Beschreibung (den {\bf Log}-Eintrag zur Entstehung) für die
Datei durch den Inhalt von BESCHREIBUNGSDATEI oder liest diesen von
der Standardeingabe, falls keine BESCHREIBUNGSDATEI angegeben wurde.
Diese nützliche Option funktioniert - leider - momentan nicht im
Client/Server-CVS. Außerdem wird jede existierende Beschreibung einer
Datei gelöscht und durch einen leeren String ersetzt, falls man
versucht, diese Option im Client/Server-CVS ohne Angabe von
BESCHREIBUNGSDATEI zu verwenden. Wenn Sie die Beschreibung einer Datei
erneuern müssen, dann tun Sie dies bitte nur lokal auf der Maschine
mit dem Archiv, oder benutzen Sie die Option {\bf -t}-BESCHREIBUNG.
BESCHREIBUNGSDATEI darf nicht mit einem Bindestrich ({\bf -}) beginnen
(siehe {\bf -t}-BESCHREIBUNG).
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf  -t-BESCHREIBUNG}
     

     \begin{list}{*}{}
      
	\item 
Wie {\bf -t}, nur dass hier BESCHREIBUNG direkt als Beschreibung verwendet
wird. BESCHREIBUNG darf Leerzeichen enthalten, wenn sie mit
Anführungszeichen eingeschlossen wird. Diese Variante funktioniert im
Client/Server-CVS und auch lokal ohne Probleme.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -U}
     

     \begin{list}{*}{}
      
	\item 
Setzt das Locking auf {\bf nicht strikt}. (Siehe auch {\bf -l} und {\bf -L} weiter oben.)
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -u[REV]}
     

     \begin{list}{*}{}
      
	\item 
Hebt die Sperrung der Revision REV auf (siehe {\bf -l}.) Wird REV
weggelassen, so entsperrt CVS die aktuellste durch den Aufrufer
gesperrte Revision. Ist REV ein Entwicklungszweig, dann entsperrt CVS
die aktuellste gesperrte Revision in dieser abgezweigten Version. Wenn
jemand anders als der Sperrer einer Revision die Sperre wieder
aufhebt, so wird an denjenigen, der die Sperrung vorgenommen hat, eine
E-Mail verschickt. Die Person, welche die Sperre aufhebt, wird auf der
Kommandozeile um eine Stellungnahme für die E-Mail gebeten. Zwischen
{\bf -u} und seinem Argument ist kein Leerzeichen.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -VRCS\_VERSIONSNUMMER (Überholt)}
     

     \begin{list}{*}{}
      
	\item 
Dies war einmal ein Weg, um CVS zur Erzeugung von RCS-Dateien zu
bewegen, die zu früheren RCS-Versionen kompatibel waren. Inzwischen
weicht das RCS-Format, das CVS benutzt, zunehmend von dem RCS-Format,
das RCS verwendet, ab, sodass diese Option nutzlos geworden ist. Die
Angabe dieser Option führt zu einer Fehlermeldung.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -xENDUNG (Überholt)}
     

     \begin{list}{*}{}
      
	\item 
Theoretisch kann man mittels dieser Option die Dateiendung der
RCS-Dateien bestimmen. Leider verlassen sich CVS und seine Werkzeuge
darauf, dass diese Endung standardmäßig ist ({\bf ,v}), daher bewirkt
diese Option nichts.
      
     \end{list}
    \end{list}

   

   \subsection{annotate [OPTIONEN] [DATEIEN] (Überholt)} \label{d78e1406}
        
    

    
  \par
  
Alternativen: ann \linebreak 
Erfordert: Arbeitskopie, Archiv \linebreak 
Ändert: Nichts
    

    
  \par
  
Zeigt Informationen darüber an, wer zuletzt welche Zeile jeder Datei
geändert hat und wann. Jede Ausgabezeile entspricht einer Zeile der
Datei. Von links nach rechts beinhaltet die Zeile die Revisionsnummer
der letzten Modifikation der Zeile, einen in Klammern stehenden
Ausdruck, der den Benutzer und das Datum der letzten Änderung
beinhaltet, einen Doppelpunkt und den Inhalt der Zeile in der Datei.
    

    
  \par
  
Wenn zum Beispiel eine Datei so aussieht:
    

    
  \par
  
Dies ist eine Testdatei
    

    
  \par
  
Sie hat nur zwai Zeilen
    

    
  \par
  
Ich meine zwei
    

    
  \par
  
dann können die Anmerkungen ({\bf annotations}) für diese Datei so aussehen:
    

    
     \begin{tt} \begin{scriptsize} 1.1 (jrandom 22-Aug-99): Dies ist eine Testdatei\end{scriptsize} \end{tt} \linebreak
     \linebreak\begin{tt} \begin{scriptsize} 1.1 (jrandom 22-Aug-99): Sie hat nur zwai Zeilen\end{scriptsize} \end{tt} \linebreak
     \linebreak\begin{tt} \begin{scriptsize} 1.2 (jrandom 22-Aug-99): Ich meine zwei\end{scriptsize} \end{tt} \linebreak
    

    
  \par
  
sodass Sie nun sehen, dass die ersten zwei Zeilen in der ersten
Revision waren und die letzte Zeile in Revision 1.2 hinzugefügt oder
geändert wurde (auch von jrandom).
    

    
  \par
  
Optionen:
    

    \begin{list}{*}{}
     
	\item 
{\bf -D DATUM}
     

     \begin{list}{*}{}
      
	\item 
Zeigt die Anmerkungen der letzten Revision vor DATUM.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -f}
     

     \begin{list}{*}{}
      
	\item 
Erzwingt die Anzeige der ersten Revision, falls die angegebene
Markierung oder ein angegebenes Datum nicht gefunden wurde. Sie können
diese Option in Verbindung mit {\bf -D} und {\bf -r} verwenden, um
sicherzustellen, dass in jedem Fall eine Ausgabe erfolgt, auch wenn es
nur Revision 1.1 der Datei ist.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -l}
     

     \begin{list}{*}{}
      
	\item 
Lokal. Der Befehl bezieht sich nur auf das aktuelle
Arbeitsverzeichnis. Eventuelle Unterverzeichnisse werden nicht
behandelt.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -R}
     

     \begin{list}{*}{}
      
	\item 
Rekursiv. Unterverzeichnisse werden ebenfalls behandelt. Da dies das
Standardverhalten ist, dient {\bf -R} lediglich zur Änderung des Verhaltens
der {\bf -l}-Option in {\bf .cvsrc}-Dateien.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -r REV}
     

     \begin{list}{*}{}
      
	\item 
Zeigt nur Anmerkungen zur Revision REV (kann eine Revisionsnummer oder
eine Marke sein).
      
     \end{list}
    \end{list}

   

   \subsection{checkout [OPTIONEN] PROJEKT(E)} \label{d78e1551}
        
    

    
  \par
  
Alternativen: co, get \linebreak 
Erfordert: Archiv \linebreak 
Ändert: Aktuelles Verzeichnis
    

    
  \par
  
Extrahiert ein Modul aus dem Archiv in eine lokale Arbeitskopie. Die
Arbeitskopie wird neu erzeugt, falls sie nicht existiert, und
aktualisiert, falls sie bereits existiert (siehe auch {\bf update}.)
    

    
  \par
  
Optionen:
    

    \begin{list}{*}{}
     
	\item 
{\bf -A}
     

     \begin{list}{*}{}
      
	\item 
Setzt alle bindenden Markierungen (Sticky Tags), Datumsangaben oder
Schlüsselwortersetzungs-Modi zurück. Diese Option entspricht der
{\bf -A}-Option für den {\bf update}-Befehl und wird dort wahrscheinlich häufiger
genutzt als hier bei {\bf checkout}.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -c}
     

     \begin{list}{*}{}
      
	\item 
Bewirkt, dass praktisch kein {\bf Checkout} stattfindet; nur die
{\bf CVSROOT/modules}-Datei wird sortiert auf die Standardausgabe
ausgegeben. Dies ist eine gute Methode, um einen Überblick darüber zu
bekommen, welche Projekte sich in einem Archiv befinden. Projekte ohne
Eintrag in der modules-Datei werden jedoch nicht aufgelistet. (Das ist
ganz normal, weil der Name des Hauptverzeichnisses eines Projektes im
Archiv standardmäßig als der Modulname des Projektes dient.)
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -D DATUM}
     

     \begin{list}{*}{}
      
	\item 
Führt einen {\bf Checkout} der letzten Revisionen bis DATUM aus. Diese
Option ist bindend, d.h. Sie können anschließend aus der Arbeitskopie
keinen {\bf Commit} mehr durchführen, ohne das gebundene Datum
zurückzusetzen (siehe {\bf -A}). Diese Option impliziert {\bf -P}, siehe unten.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -d VERZ}
     

     \begin{list}{*}{}
      
	\item 
Erzeugt die Arbeitskopie in einem Verzeichnis VERZ, anstatt ein
Verzeichnis mit dem Namen des vom {\bf Checkout} betroffenen Moduls zu
erzeugen. Wenn Sie nur einen Teil eines Projektes behandeln und dieser
Teil irgendwo unterhalb des Wurzelverzeichnisses des Projektes liegt,
werden die lokalen leeren Zwischenverzeichnisse weggelassen. Sie
können {\bf -N} benutzen, um diese Sparmaßnahme zu unterbinden.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -f}
     

     \begin{list}{*}{}
      
	\item 
Erzwingt einen {\bf Checkout} der ersten Revision, falls die angegebene
Marke oder das angegebene Datum nicht gefunden wurde. Wird häufig in
Verbindung mit {\bf -D} oder {\bf -r} verwendet, um sicherzustellen, dass der
{\bf Checkout} in jedem Fall erfolgreich ist.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -j REV[:DATUM] oder -j REV1[:DATUM] -j REV2[:DATUM]}
     

     \begin{list}{*}{}
      
	\item 
Führt zwei Entwicklungslinien zu einer zusammen. Diese Option
entspricht der {\bf -j}-Option zu {\bf update}, die wesentlich häufiger Verwendung
findet (siehe {\bf update} für weitere Details).
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -k METHODE}
     

     \begin{list}{*}{}
      
	\item 
Setzt die Methode zur Schlüsselwortersetzung für RCS auf METHODE (so
kann die standardmäßig eingestellte Methode für die behandelten
Dateien verändert werden). Siehe auch den Abschnitt zur
Schlüsselwortersetzung weiter hinten in diesem Kapitel. Die gewählte
Methode wird permanent an die betroffenen Dateien gebunden - spätere
{\bf Updates} der Arbeitskopie werden sie beibehalten.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -l}
     

     \begin{list}{*}{}
      
	\item 
Lokal; führt lediglich einen {\bf Checkout} auf die Hauptentwicklungslinie
des Projektes aus. Unterverzeichnisse werden nicht behandelt.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -N}
     

     \begin{list}{*}{}
      
	\item 
Unterdrückt das Weglassen leerer Unterverzeichnisse mit der {\bf -d}-Option.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -n}
     

     \begin{list}{*}{}
      
	\item 
Führt keines der {\bf Checkout}-Programme aus, die in {\bf CVSROOT/modules} mit
der {\bf -o}-Option angegeben sind. (Siehe auch den Abschnitt
{\bf Archivverwaltungsdateien} weiter hinten in diesem Kapitel für
weitere Informationen.)
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -P}
     

     \begin{list}{*}{}
      
	\item 
Löscht leere Verzeichnisse in der Arbeitskopie (entsprechend der
{\bf -P}-Option zu {\bf update}).
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -p}
     

     \begin{list}{*}{}
      
	\item 
Führt einen {\bf Checkout} auf die Standardausgabe durch, nicht in Dateien
(entsprechend der {\bf -p}-Option zu {\bf update}).
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -R}
     

     \begin{list}{*}{}
      
	\item 
Behandelt auch rekursiv Unterverzeichnisse (dies ist der Normalfall).
Siehe auch die {\bf -f}-Option.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -r MARKE}
     

     \begin{list}{*}{}
      
	\item 
Führt einen {\bf Checkout} der mit MARKE bezeichneten Revision durch. (Es
würde kaum Sinn haben, hier eine numerische Revision (REV) zu
verwenden, möglich ist es dennoch!) Diese Option bindet die mit MARKE
bezeichnete Revision und impliziert {\bf -P}.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -s}
     

     \begin{list}{*}{}
      
	\item 
Wie {\bf -c}, zeigt aber den Status jedes Moduls und sortiert nach Status.
(Siehe auch {\bf CVSROOT/modules} im Abschnitt
{\bf Archivverwaltungsdateien}.)
      
     \end{list}
    \end{list}
   

   \subsection{commit [OPTIONEN] [DATEIEN]} \label{d78e1906}
        
    

    
  \par
  
Alternativen: ci, comm \linebreak 
Erfordert: Arbeitskopie, Archiv \linebreak 
Ändert: Archiv (und Verwaltungsdateien der Arbeitskopie)
    

    
  \par
  
Überträgt Änderungen einer Arbeitskopie in das Archiv.
    


    
  \par
  
Optionen:
    

    \begin{list}{*}{}
     
	\item 
{\bf -F MITTEILUNGSDATEI}
     

     \begin{list}{*}{}
      
	\item 
Benutzt den Inhalt der MITTEILUNGSDATEI für den Log-Eintrag, anstatt
einen Editor zu aktivieren. Diese Option kann nicht mit {\bf -m} kombiniert
werden.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -f}
     

     \begin{list}{*}{}
      
	\item 
Erzwingt die Aktualisierung des Archivs mit einer neuen Revision, auch
wenn keinerlei Änderungen in der Arbeitskopie gemacht wurden. {\bf Commit}
arbeitet mit dieser Option nicht rekursiv (d.h. es impliziert {\bf -l}).
Rekursion kann mit der Option {\bf -R} erzwungen werden.
      
     \end{list}
    \end{list}

    
  \par
  
Bemerkung:
    

    
Diese Bedeutung von {\bf -f} stimmt mit der sonst üblichen Verwendung
({\bf erzwinge die Verwendung der ersten Revision}) in den CVS-Kommandos
nicht überein!
    

    \begin{list}{*}{}
     
	\item 
{\bf -l}
     

     \begin{list}{*}{}
      
	\item 
Lokal; überträgt nur Änderungen aus dem aktuellen Verzeichnis.
Unterverzeichnisse werden nicht berücksichtigt.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -m MITTEILUNG}
     

     \begin{list}{*}{}
      
	\item 
Verwendet MITTEILUNG als Log-Dateieintrag, anstatt einen Editor zu
aktivieren. Diese Option kann nicht mit {\bf -F} kombiniert werden.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -n}
     

     \begin{list}{*}{}
      
	\item 
Startet kein Modulprogramm. (Siehe auch den Abschnitt {\bf Archivverwaltungsdateien}
in diesem Kapitel für weitere Informationen.)
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -R}
     

     \begin{list}{*}{}
      
	\item 
Überträgt Änderungen auch aus Unterverzeichnissen. Dies ist das
normale Verhalten, und die Option findet nur zur Aufhebung von {\bf -l} in
.cvsrc-Dateien Verwendung.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -r REV}
     

     \begin{list}{*}{}
      
	\item 
Überträgt Änderungen der Arbeitskopie in die Revision REV, die
entweder ein Entwicklungszweig sein muss oder eine Revision, die höher
als alle bisherigen Revisionen ist. {\bf Commits} auf einer abgezweigten
Version werden immer an das Ende angehängt - Sie können eine früher
übertragene Version nicht {\bf aktualisieren}. Die Nutzung dieser Option
bindet die Revision fest an die der übertragenen Dateien. Dies kann
mit {\bf update} {\bf -A} gelöscht werden. Die {\bf -r}-Option impliziert {\bf -f}. Eine neue
Revision wird auch dann übertragen, wenn keine Dateien in der
Arbeitskopie verändert wurden.
      
     \end{list}
    \end{list}
   

   \subsection{diff [OPTIONEN] [DATEIEN]} \label{d78e2081}
        
    

    
  \par
  
Alternativen: di, dif \linebreak 
Erfordert: Arbeitskopie, Archiv \linebreak 
Ändert: Nichts
    

    
  \par
  
Zeigt die Unterschiede zwischen zwei Revisionen (im Unix {\bf diff}-Format)
an. Wenn {\bf diff} ohne weitere Optionen aufgerufen wird, dann zeigt CVS
die (möglicherweise noch nicht durch einen {\bf Commit} abgeglichenen)
Unterschiede zwischen den Basisrevisionen im Archiv und der
Arbeitskopie an. Die {\bf Basis}-Revisionen bezeichnen dabei die letzten
Revisionen, die aus dieser Arbeitkopie heraus vom Archiv bezogen
wurden. Beachten Sie, dass es durchaus neuere Revisionen im Archiv
geben könnte, nämlich dann, wenn jemand anderes zwischenzeitlich einen
{\bf Commit} irgendwelcher Änderungen vorgenommen hat, die noch nicht mit
einem {\bf Update} in diese Arbeitskopie übernommen wurden.
    

    
  \par
  
Optionen:
    

    \begin{list}{*}{}
     
	\item 
{\bf -D DATUM}
     

     \begin{list}{*}{}
      
	\item 
Erzeugt ein {\bf Diff} gegen die neueste Revision, die nicht älter als DATUM
ist. Diese Option verhält sich wie {\bf -r} REV, außer dass statt der
Revision ein Datum Verwendung findet.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -k METHODE}
     

     \begin{list}{*}{}
      
	\item 
Expandiert RCS-Schlüsselwörter in den {\bf Diffs} unter Verwendung der
angegebenen METHODE. (Siehe auch den Abschnitt
{\bf Schlüsselwortersetzung} weiter hinten in diesem Kapitel.)
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -l}
     

     \begin{list}{*}{}
      
	\item 
Lokal; vergleicht nur Dateien aus dem aktuellen Verzeichnis.
Unterverzeichnisse werden nicht berücksichtigt.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -r REV oder -r REV1 -r REV2}
     

     \begin{list}{*}{}
      
	\item 
Vergleicht entweder die aktuelle mit der angegebenen oder die beiden
angegebenen Revisionen miteinander. Mit einer {\bf -r}-Option wird die mit
REV bezeichnete Revision aus dem Archiv mit der aktuellen Arbeitskopie
verglichen. Bei Angabe zweier {\bf -r}-Argumente wird der Unterschied
zwischen den jeweils angegebenen Revisionen aus dem Archiv ermittelt.
Im letzteren Fall spielt die Arbeitskopie keine Rolle, und die
Revisionen können in beliebiger Reihenfolge angegeben werden - die
Ausgabe spiegelt dann die {\bf Richtung} des Vergleichsvorganges wider.
Wird {\bf -r} ganz weggelassen, so wird zwischen der Arbeitskopie und der
Revision, worauf letztere basiert, verglichen.
      
     \end{list}
    \end{list}
   

   \subsection{Diff-Kompatibilitätsoptionen} \label{d78e2204}
        
    

    
  \par
  
Zusätzlich zu den angegebenen Optionen verwendet {\bf cvs diff} noch einige
Optionen, die mit der GNU-Version des normalen
Kommandozeilenprogrammes {\bf diff} übereinstimmen. Es folgt eine komplette
Liste dieser Optionen, zusammen mit einer Erklärung einiger der
üblicherweise am häufigsten verwendeten. (Für weitere Informationen
siehe auch die GNU {\bf diff}-Dokumentation.)
    

    
    
    %table
    \begin{tabular}{|l|}
    \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --0 -1 -2 -3 -4 -5 -6 -7 -8 -9}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --binary}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --brief}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --changed-group-format=ARG}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -c}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -C NLINES}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --context[=LINES]}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -e --ed}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -t --expand-tabs}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -f --forward-ed}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --horizon-lines=ARG}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --ifdef=ARG}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -w --ignore-all-space}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -B --ignore-blank-lines}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -i --ignore-case}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -I REGEXP}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --ignore-matching-lines=REGEXP}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -h}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -b --ignore-space-change}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -T --initial-tab}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -L LABEL}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --label=LABEL}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --left-column}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -d --minimal}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -N --new-file}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --new-line-format=ARG}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --old-line-format=ARG}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --paginate}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -n --rcs}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -s --report-identical-files}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -p}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --show-c-function}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -y --side-by-side}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -F REGEXP}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --show-function-line=REGEXP}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -H --speed-large-files}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --suppress-common-lines}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -a --text}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --unchanged-group-format=ARG}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -u}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -U NLINES}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --unified[=LINES]}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -V ARG}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf -W COLUMNS}
      
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              
{\bf --width=COLUMNS}
      
		\end{minipage}
	      \\ \hline
    \end{tabular}
  

    
  \par
  
Folgende GNU {\bf diff}-Optionen werden am häufigsten mit cvs {\bf diff} benutzt:
    

    \begin{list}{*}{}
     
	\item 
{\bf -B}
     

     \begin{list}{*}{}
      
	\item 
Ignoriert Unterschiede, die auf das Einfügen oder Löschen leerer
Zeilen hinauslaufen.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -b}
     

     \begin{list}{*}{}
      
	\item 
Ignoriert Unterschiede in der Anzahl von Leerzeichen. Diese Option
behandelt alle Folgen von Leerzeichen gleichwertig und ignoriert
Leerzeichen am Zeilenende. Technischer ausgedrückt komprimiert diese
Option alle Folgen von Leerzeichen auf je ein einziges und löscht
Leerzeichen vom Zeilenende, bevor ein Vergleich stattfindet (siehe
auch {\bf -w}).
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -c}
     

     \begin{list}{*}{}
      
	\item 
Erzeugt Ausgaben im Kontext, d.h. üblicherweise werden um jeden
aufgelisteten Unterschied drei Zeilen des umgebenden Quelltextes (eben
der Kontext) angezeigt. (Dies wird gemacht, damit das patch-Programm
verwendet werden kann, das mindestens zwei Zeilen Kontext benötigt.)
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -C ANZ oder --context ANZ}
     

     \begin{list}{*}{}
      
	\item 
Wie {\bf -c}, aber mit ANZ Zeilen an Kontext.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -i}
     

     \begin{list}{*}{}
      
	\item 
Der Vergleich nimmt mit {\bf -i} keine Rücksicht auf Groß- und Kleinschreibung.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -u}
     

     \begin{list}{*}{}
      
	\item 
Zeigt die Ausgabe im so genannten unified {\bf diff}-Format an.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -w}
     

     \begin{list}{*}{}
      
	\item 
Ignoriert alle Unterschiede bei Leerzeichen, sogar dann, wenn in der
einen Datei an einer Stelle Leerzeichen sind, wo in der anderen
überhaupt keine sind. Im Grunde eine verschärfte Version von {\bf -b}.
      
     \end{list}
    \end{list}

    \subsubsection{edit [OPTIONEN] [DATEIEN]} \label{d78e2758}
        
     

     
  \par
  
Alternativen: Keine \linebreak 
Erfordert: Arbeitskopie, Archiv \linebreak 
Ändert: Zugriffsrechte in der Arbeitskopie, Watchliste im Archiv
     

     
  \par
  
Signalisiert, dass Sie dabei sind, beobachtete Datei(en) zu
bearbeiten. Sie werden außerdem als temporärer Beobachter der
Beobachterliste der Datei hinzugefügt. (Wenn Sie cvs unedit ausführen,
werden Sie von der Liste entfernt; siehe auch {\bf watch}, {\bf watchers},
{\bf unedit} und {\bf editors}.)
     

     
  \par
  
Optionen:
     

     \begin{list}{*}{}
      
	\item 
{\bf -a AKTIONEN}
      

      \begin{list}{*}{}
       
	\item 
Legt fest, für welche Aktionen Sie temporärer Beobachter sein möchten.
AKTIONEN sollten entweder edit, unedit, {\bf commit}, all oder none sein.
(Bei Nichtbenutzung von {\bf -a} wird automatisch all angenommen.)
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -l}
      

      \begin{list}{*}{}
       
	\item 
Lokal; signalisiert das Bearbeiten nur für Dateien im aktuellen Verzeichnis.
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -R}
      

      \begin{list}{*}{}
       
	\item 
Rekursiv (dies ist die Standardeinstellung). Gegenteil von {\bf -l}. {\bf -R}
nutzt nur, um ein {\bf -l} in der {\bf .cvsrc}-Datei rückgängig zu machen.
       
      \end{list}
     \end{list}
    

    \subsubsection{editors [OPTIONEN] [DATEIEN]} \label{d78e2852}
        
     

     
  \par
  
Alternativen: Keine \linebreak 
Erfordert: Arbeitskopie, Archiv \linebreak 
Ändert: nichts
     

     
  \par
  
Zeigt an, wer im Moment eine beobachtete Datei editiert (siehe auch
{\bf watch}, {\bf watchers}, {\bf unedit} und {\bf edit}).
     

     
  \par
  
Optionen:
     

     \begin{list}{*}{}
      
	\item 
{\bf -l}
      

      \begin{list}{*}{}
       
	\item 
Lokal; Anzeige nur für Dateien im aktuellen Verzeichnis.
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -R}
      

      \begin{list}{*}{}
       
	\item 
Rekursiv (dies ist die Standardeinstellung). Sie könnten {\bf -R} benötigen,
um ein {\bf -l} in einer {\bf .cvsrc}-Datei rückgängig zu machen.
       
      \end{list}
     \end{list}
    

    \subsubsection{export [OPTIONEN] PROJEKT(E)} \label{d78e2922}
        
     

     
  \par
  
Alternativen: exp, ex \linebreak 
Erfordert: Archiv \linebreak 
Ändert: Aktuelles Verzeichnis
     

     
  \par
  
Exportiert Dateien aus dem Archiv, um einen Projektbaum zu erzeugen,
der keine Arbeitskopie darstellt (d.h. alle {\bf CVS/}-Verwaltungsdateien
fehlen). Hauptsächlich nützlich, um ein Distributionsarchiv
zusammenzustellen.
     

     
  \par
  
Optionen:
     

     \begin{list}{*}{}
      
	\item 
{\bf -D DATUM}
      

      \begin{list}{*}{}
       
	\item 
Exportiert die neueste Revision, die nicht älter ist als DATUM.
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -d VERZ}
      

      \begin{list}{*}{}
       
	\item 
Exportiert in das Verzeichnis VERZ (andernfalls wird der
Verzeichnisname aus dem Modulnamen des Projekts genommen).
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -f}
      

      \begin{list}{*}{}
       
	\item 
Erzwingt die Verwendung der ersten Revision, falls eine gegebene
Bezeichnung oder Revision nicht gefunden werden kann (zur Nutzung mit
{\bf -D} oder {\bf -r}).
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -k METHODE}
      

      \begin{list}{*}{}
       
	\item 
Expandiert RCS-Schlüsselwörter nach der angegebenen METHODE. (Siehe
den Abschnitt über Schlüsselwortersetzung weiter hinten in diesem
Kapitel.)
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -l}
      

      \begin{list}{*}{}
       
	\item 
Lokal; exportiert nur das Hauptverzeichnis, keine Unterverzeichnisse.
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -N}
      

      \begin{list}{*}{}
       
	\item 
Verhindert das Weglassen leerer Unterverzeichnisse. Entspricht der
Option {\bf -N} beim {\bf checkout}.
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -n}
      

      \begin{list}{*}{}
       
	\item 
Startet keine modulspezifischen Programme, wie sie in CVSROOT/modules
angegeben werden können. (Siehe auch den Abschnitt
{\bf Archivverwaltungsdateien} in diesem Kapitel für weitere
Informationen.)
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -P}
      

      \begin{list}{*}{}
       
	\item 
Leere Verzeichnisse werden weggelassen (wie die {\bf -P}-Option bei {\bf checkout}
oder {\bf update}).
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -R}
      

      \begin{list}{*}{}
       
	\item 
Rekursiv (dies ist die Standardeinstellung). Alle Unterverzeichnisse
des aktuellen Verzeichnisses werden exportiert. Sie könnten {\bf -R}
benötigen, um ein {\bf -l} in einer {\bf .cvsrc}-Datei rückgängig zu machen.
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -r REV}
      

      \begin{list}{*}{}
       
	\item 
Exportiert die Revision REV. REV ist fast immer ein Name, keine
numerische Revision.
       
      \end{list}
     \end{list}
    

    \subsubsection{gserver} \label{d78e3127}
        
     

     
  \par
  
Dies ist der GSSAPI-(Generic Security Services API-)Server. Dieses
Kommando wird normalerweise nicht direkt von Benutzern ausgeführt. Es
wird hingegen serverseitig gestartet, wenn ein Benutzer von einem
Gastrechner mit der :gserver:-Zugriffsmethode eine Verbindung
aufbaut:
     

     
      \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs -d :gserver:jrandom@floss.red-bean.com:/usr/local/repos checkout projekt
       \end{scriptsize} \end{tt} \linebreak 
     

     
  \par
  
Bemerkung:
     

     
GSSAPI verwendet, unter anderem, die Kerberos-Version 5; für die
Kerberos-Version 4 verwenden Sie bitte die :kserver:-Methode.
     

     
Die Konfiguration und Benutzung einer GSSAPI-Bibliothek auf Ihren
Maschinen ist jenseits des Umfanges dieses Buches. (Für weitere
Hinweise siehe auch den Abschnitt {\bf GSSAPI Authenticated} im
Cederqvist.)
     

     
  \par
  
Optionen: Keine
     
    

    \subsubsection{history [OPTIONEN] [DATEINAMEN\_BESTANDTEIL(E)]} \label{d78e3157}
        
     

     
  \par
  
Alternativen: hi, his \linebreak 
Erfordert: Archiv, CVSROOT/history \linebreak 
Ändert: Nichts
     

     
  \par
  
Zeigt eine zeitlich geordnete Auflistung der Aktivitäten im Archiv.
Genauer gesagt zeigt diese Option eine Auflistung der Verwendung aller
folgenden Kommandos: {\bf checkout}, {\bf commit}, {\bf rtag}, {\bf update} und {\bf release}.
Standardeinstellung ist das Auflisten von {\bf Checkouts} (siehe aber die
Option {\bf -x}). Dieses Kommando funktioniert nicht, wenn die Datei
{\bf CVSROOT/history} im Archiv nicht existiert.
     

     
  \par
  
Das {\bf history}-Kommando unterscheidet sich von anderen CVS-Kommandos auf
mehrere Arten. Erstens benötigt es üblicherweise unbedingt Optionen,
um etwas Sinnvolles zu tun (und einige dieser Optionen bedeuten hier
etwas völlig anderes als bei den anderen CVS-Kommandos üblich).
Zweitens nimmt es anstatt ganzer Dateinamen auch einen oder mehrere
Wortbestandteile und listet dann alle Dateien auf, in deren Namen
mindestens einer dieser Bestandteile vorkommt. Drittens sieht die
Ausgabe von {\bf history} ziemlich nach zufälligem Buchstabenmüll aus,
solange man nicht gelernt hat, sie richtig zu interpretieren - daher
wird das Ausgabeformat in einem eigenen Abschnitt im Anschluss an die
Optionen erklärt (siehe auch {\bf log}).
     

     
  \par
  
Optionen:
     

     \begin{list}{*}{}
      
	\item 
{\bf -a}
      

      \begin{list}{*}{}
       
	\item 
Zeigt eine Liste für alle Benutzer (normalerweise werden nur die
eigenen Aktivitäten gelistet).
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -b ZEICHENKETTE}
      

      \begin{list}{*}{}
       
	\item 
Listet alles bis zum ersten Eintrag, der ZEICHENKETTE im Modulnamen,
Dateinamen oder Archivpfad enthält.
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -c}
      

      \begin{list}{*}{}
       
	\item 
Commits werden mit aufgelistet.
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -D DATUM}
      

      \begin{list}{*}{}
       
	\item 
Zeigt alle Daten seit DATUM (die üblichen CVS-Datumsformate sind
anwendbar).
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -e}
      

      \begin{list}{*}{}
       
	\item 
Alle Arten von Einträgen werden gelistet.
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -f DATEI}
      

      \begin{list}{*}{}
       
	\item 
Zeigt die letzte aufgezeichnete Aktion an, die auf der Datei DATEI
ausgeführt wurde. Diese Option kann mehrfach verwendet werden.
Beachten Sie, dass hier {\bf -f} eine andere Wirkung hat als bei den übrigen
CVS-Kommandos: {\bf Erzwinge neuste Revision, wenn alles andere
fehlschlägt.}
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -l}
      

      \begin{list}{*}{}
       
	\item 
Letztes; listet den jeweils letzten (neuesten) Eintrag jedes Projektes. Beachten
Sie, dass hier {\bf -l} eine andere Wirkung
hat als bei den übrigen CVS-Kommandos: {\bf Lokal ausführen, keine
Unterverzeichnisse.}
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -m MODUL}
      

      \begin{list}{*}{}
       
	\item 
Dies erzeugt einen kompletten Report über MODUL (ein Projektname).
Diese Option kann mehrfach verwendet werden.
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -n MODUL}
      

      \begin{list}{*}{}
       
	\item 
Listet das letzte (aktuellste) Ereignis, das für ein MODUL
aufgezeichnet wurde. So ist, z.B. der {\bf Checkout} eines Moduls ein
Modulereignis, aber das Ändern oder Aktualisieren einer Datei
innerhalb des Moduls ist ein Dateiereignis. Diese Option kann mehrfach
verwendet werden. Beachten Sie, dass hier {\bf -n} eine andere Wirkung hat
als bei den übrigen CVS-Kommandos: {\bf Keine
{\bf CVSROOT/modules}-Modulprogramme starten.}
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -o}
      

      \begin{list}{*}{}
       
	\item 
Listet {\bf Checkout}-Einträge (dies ist die Standardeinstellung).
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -p ARCHIV}
      

      \begin{list}{*}{}
       
	\item 
Zeigt die Daten für ein bestimmtes Verzeichnis im Archiv. Diese Option
kann mehrfach verwendet werden. Beachten Sie, dass hier {\bf -p} eine andere
Wirkung hat als bei den übrigen CVS-Kommandos: {\bf Daten auf die
Standardausgabe anstatt in eine Datei schreiben.}
       
      \end{list}
     \end{list}

     
  \par
  
Bemerkung:
     

     
Diese Option scheint zumindest teilweise fehlerhaft zu sein (Stand Sommer 1999).
     

     \begin{list}{*}{}
      
	\item 
{\bf -r REV}
      

      \begin{list}{*}{}
       
	\item 
Listet Einträge, die sich auf Revisionen nach der ersten Revision
beziehen, ab der die Revision oder Marke mit dem Namen REV in
einzelnen RCS-Dateien zu finden ist. Jede RCS-Datei wird dazu nach REV
durchsucht.
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -T}
      

      \begin{list}{*}{}
       
	\item 
Listet alle Markierungsvorgänge.
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -t MARKE}
      

      \begin{list}{*}{}
       
	\item 
Zeigt alle Einträge, seit MARKE das letzte Mal zur{\bf history}-Datei
hinzugefügt wurde. Im Unterschied zur {\bf -r}-Option wird hier nur die
Datei{\bf CVSROOT/history} durchsucht, und die Option ist daher wesentlich
schneller.
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -u BENUTZER}
      

      \begin{list}{*}{}
       
	\item 
Zeigt alle Vorfälle, die mit einem BENUTZER in Zusammenhang stehen.
Diese Option kann mehrfach verwendet werden.
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -w}
      

      \begin{list}{*}{}
       
	\item 
Zeigt alle Einträge, die sich auf das Verzeichnis beziehen, aus dem
Sie das {\bf history}-Kommando aufrufen.
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -X HISTORY-DATEI}
      

      \begin{list}{*}{}
       
	\item 
Benutzt HISTORY-DATEI anstatt {\bf CVSROOT/history}. Diese Option dient
hauptsächlich zur Fehlersuche und wird nicht offiziell unterstützt;
Sie könnten sie trotzdem nützlich finden (z.B. um Reports aus alten
{\bf history}-Dateien zu erzeugen, die Sie aufgehoben haben).
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -x ARTEN}
      

      \begin{list}{*}{}
       
	\item 
Listet Vorfälle der angegebenen ARTEN auf. Jede Art von Eintrag wird
durch einen Buchstaben aus der Liste {\bf TOEFWUCGMAR} repräsentiert;
beliebige Kombinationen aus diesen Buchstaben sind erlaubt. Ihre
Bedeutung ist:
       

       
	\item 
{\bf T} MARKE
       

       
	\item 
{\bf O} Checkout
       

       
	\item 
{\bf E} Export
       

       
	\item 
{\bf F} Release
       

       
	\item 
{\bf W} Aktualisierung (bedeutungslos gewordene Datei aus Arbeitskopie gelöscht)
       

       
	\item 
{\bf U} Aktualisierung (Datei wurde durch Checkout überschrieben)
       

       
	\item 
{\bf C} Aktualisierung (Dateien wurden kombiniert, Konflikte traten auf)
       

       
	\item 
{\bf G} Aktualisierung (Dateien wurden kombiniert, keine Konflikte)
       

       
	\item 
{\bf M} Commit (Datei wurde verändert)
       

       
	\item 
{\bf A} Commit (Datei wurde hinzugefügt)
       

       
	\item 
{\bf R} Commit (Datei wurde entfernt)
       

       
	\item 
Die Standardeinstellung, falls {\bf -x} nicht angegeben wird, ist {\bf Checkouts}
anzuzeigen (wie {\bf -x} O).
       
      \end{list}
     \end{list}

     \begin{list}{*}{}
      
	\item 
{\bf -z ZONE}
      

      \begin{list}{*}{}
       
	\item 
Listet Zeiten in Übereinstimmung mit der Zeitzone ZONE auf. ZONE ist
eine Abkürzung für die gewünschte Zeitzone wie zum Beispiel UTC, GMT,
BST, CET.1 Eine vollständige Liste aller Zeitzonen ist in der Datei
{\bf lib/getdate.c} in der CVS Quelltext-Distribution enthalten.
       
      \end{list}
     \end{list}
    
   

   \subsection{History-Ausgabe} \label{d78e3641}
        
    

     
  \par
  
Die Ausgabe des {\bf history}-Befehls ist eine Folge von Zeilen; jede Zeile
stellt ein Ereignis aus der {\bf History}-Datei dar und beginnt mit einem
einzelnen Symbolbuchstaben, der die Art des Ereignisses signalisiert.
Zum Beispiel:
     

     
      \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs history -D yesterday -x TMO
       \end{scriptsize} \end{tt} \linebreak 
      \begin{tt} \begin{scriptsize} M 08/21 20:19 +0000 jrandom 2.2 baar myproj == \verb+<+remote\verb+>+\end{scriptsize} \end{tt} \linebreak
      \linebreak\begin{tt} \begin{scriptsize} M 08/22 04:18 +0000 jrandom 1.2 README myproj == \verb+<+remote\verb+>+\end{scriptsize} \end{tt} \linebreak
      \linebreak\begin{tt} \begin{scriptsize} O 08/22 05:15 +0000 jrandom myproj =myproj= \~{}/src/*\end{scriptsize} \end{tt} \linebreak
      \linebreak\begin{tt} \begin{scriptsize} M 08/22 05:33 +0000 jrandom 2.18 README.txt myproj == \~{}/src/myproj\end{scriptsize} \end{tt} \linebreak
      \linebreak\begin{tt} \begin{scriptsize} O 08/22 14:25 CDT jrandom myproj =myproj= \~{}/src/*\end{scriptsize} \end{tt} \linebreak
      \linebreak\begin{tt} \begin{scriptsize} O 08/22 14:26 CDT jrandom [99.08.23.19.26.03] myproj =myproj= \~{}/src/*\end{scriptsize} \end{tt} \linebreak
      \linebreak\begin{tt} \begin{scriptsize} O 08/22 14:28 CDT jrandom [Exotic\_Greetings-branch] myproj =myproj= \~{}/src/*\end{scriptsize} \end{tt} \linebreak
     

     
  \par
  
Die Symbolbuchstaben sind dieselben wie bei der obigen {\bf -x}-Option. Auf
den Buchstaben folgt das Datum des Ereignisses (in der Zeitzone
UTC/GMT, falls nicht {\bf -z} verwendet wurde), gefolgt von dem Namen des
Benutzers, der für das Ereignis verantwortlich ist.
     

     
  \par
  
Hinter dem Benutzer kann eine Revisionsnummer, eine Marke oder ein
Datum stehen, aber nur falls es dem entsprechenden Ereignis angemessen
ist. (Datum oder Marke stehen in eckigen Klammern und sind wie oben
gezeigt formatiert.) Beim {\bf Commit} einer Datei steht dort die neue
Revisionsnummer; wenn Sie mit {\bf -D} oder {\bf -r} einen {\bf Checkout} machen, dann
wird das gebundene Datum oder die angegebene Marke in eckigen Klammern
angezeigt. Bei einem einfachen {\bf Checkout} wird gar nichts angezeigt.
     

     
  \par
  
Als Nächstes kommt der Name der Datei, auf die sich der Eintrag
bezieht bzw. der Name des Moduls, falls sich das Ereignis auf ein
Modul bezieht. Im ersteren Fall folgen als Nächstes der
Modul-/Projektname und der Name und das Verzeichnis der Arbeitskopie
im Home-Verzeichnis des Benutzers. Im letzteren Fall sind die nächsten
zwei Dinge, die auf das Modul folgen, der Name der ausgecheckten
Arbeitskopie des Moduls (zwischen zwei Gleichheitszeichen), gefolgt
von deren Standort im Home-Verzeichnis des Benutzers. (Der Name des
Moduls in der Arbeitskopie kann von dem im Archiv abweichen, falls die
Option {\bf -d} beim {\bf Checkout} verwendet wurde.)
     

     \subsubsection{import [OPTIONEN] [ARCHIV] [EXTERNE MARKE] [RELEASE\_MARKE]} \label{d78e3718}
        
      

      
  \par
  
Alternativen: im, imp \linebreak 
Erfordert: Archiv, aktuelles Verzeichnis (das Quellverzeichnis) \linebreak 
Ändert: Archiv
      

      
  \par
  
Fügt neuen Quelltext in das Archiv ein, wobei entweder ein neues
Projekt oder ein neuer Entwicklungszweig eines existierenden Projekts
erzeugt wird. (Für eine grundlegende Erklärung von Entwicklungszweigen
in {\bf import} siehe auch Kapitel 6, das hilft Ihnen das Folgende zu
verstehen.)
      

      
  \par
  
Es ist normal, {\bf import} dazu zu verwenden, viele Dateien oder
Verzeichnisse auf einen Schlag einem Projekt hinzuzufügen oder um ein
neues Projekt zu kreieren. Um einzelne Dateien hinzuzufügen, sollten
Sie {\bf add} verwenden.
      

      
  \par
  
Optionen:
      

      \begin{list}{*}{}
        
	\item 
{\bf -b ZWEIG}
        

        \begin{list}{*}{}
         
	\item 
Importiert in den Entwicklungszweig ZWEIG. (ZWEIG ist eine echte
Verzweigungsnummer, keine Marke.) Diese Option wird selten genutzt,
kann aber nützlich sein, wenn man Quelltexte für dasselbe Projekt von
unterschiedlichen Lieferanten erhält. Ein normales import-Kommando
nimmt an, dass die Quelltexte in den Standardentwicklungszweig für
externe Quelltexte importiert werden sollen, der {\bf 1.1.1} ist. Weil das
üblich ist, macht sich meist keiner die Mühe, {\bf -b} zu verwenden.
        
       \end{list}
      \end{list}

      
       \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs import -m ''import von Lieferant 1'' derenprojekt MARKE1 MARKE1-0
        \end{scriptsize} \end{tt} \linebreak 
      

      \begin{list}{*}{}
       \begin{list}{*}{}
        
	\item 
Um einen anderen Entwicklungszweig als den normalen zu importieren,
müssen Sie die Nummer des Zweiges explizit angeben:
        
       \end{list}
      \end{list}

      
       \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs import -b 1.1.3 -m ''von Lieferant 2'' derenprojekt MARKE2 MARKE2-0
        \end{scriptsize} \end{tt} \linebreak 
      

      \begin{list}{*}{}
       \begin{list}{*}{}
        
	\item 
Der 1.1.3-Zweig kann, wie jeder andere auch, weitere zukünftige
Imports aufnehmen und ebenfalls wie jeder andere in die
Hauptentwicklungslinie integriert werden. Dabei müssen Sie jedoch
darauf achten, dass alle zukünftigen Imports, die {\bf -b} 1.1.3 verwenden,
auch dieselbe Marke (MARKE2) benutzen. CVS prüft nicht, ob die Nummer
und die Marke einer abgezweigten Version übereinstimmen. Sollte dies
jedoch nicht der Fall sein, werden unschöne und nicht vorhersagbare
Dinge passieren.
        
       \end{list}
      \end{list}

      
  \par
  
Bemerkung:
      

      
Entwicklungszweige von externen Lieferanten [{\bf Vendor Branches},
Anm.d.Übers.] werden normalerweise ungerade nummeriert, interne
hingegen gerade.
      

      \begin{list}{*}{}
       
	\item 
{\bf -d}
       

       \begin{list}{*}{}
        
	\item 
Vermerkt den Zeitpunkt der letzten Änderung der Quelldateien anstatt
der aktuellen Zeit als Zeitpunkt des Imports. Dies funktioniert nicht
mit Client/Server-CVS.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -I NAME}
       

       \begin{list}{*}{}
        
	\item 
Dateien mit dem Namen NAME werden beim Import ignoriert. Diese Option
kann mehrfach verwendet werden. Wildcards werden unterstützt: Bei
Angabe von {\bf *.foo} werden alle Dateien ignoriert, die auf {\bf .foo} enden.
(Für weitere Details zu Wildcards siehe auch {\bf CVSROOT/cvsignore} im Abschnitt
{\bf Archivverwaltungsdateien}.) Die folgenden Datei- und Verzeichnisnamen
werden standardmäßig ignoriert:
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       \begin{list}{*}{}
      
    
    %table
    \begin{tabular}{|l|}
    \hline 
            
               
		\begin{minipage}{60mm}
              		
.
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
..
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
.\#*
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
\#*
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
,*
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
\_\$*
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*\~{}
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*\$
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*.a
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*.bak
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*.BAK
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*.elc
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*.exe
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*.ln
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*.o
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*.obj
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*.olb
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*.old
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*.orig
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*.rej
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*.so
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
*.Z
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
.del-*
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
.make.state
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
.nse\_depinfo
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
core
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
CVS
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
CVS.adm
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
cvslog.*
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
RCS
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
RCSLOG
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
SCCS
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
tags
	
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              		
TAGS
	
		\end{minipage}
	      \\ \hline
    \end{tabular}
  	
       \end{list}
      \end{list}

      \begin{list}{*}{}
       \begin{list}{*}{}
        
	\item 
Sie können das Ignorieren dieser sowie eventuell weiterer, in
{\bf .cvsignore}, {\bf CVSROOT/cvsignore} oder der Umgebungsvariablen CVSIGNORE
aufgelisteter Dateinamen unterdrücken, indem Sie die Option {\bf -I} !
verwenden. Das heißt,
        
       \end{list}
      \end{list}

      
       \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs import -I ! -m ''importiere das Universum'' proj MARKE MARKE\_0
        \end{scriptsize} \end{tt} \linebreak 
      

      \begin{list}{*}{}
       \begin{list}{*}{}
        
	\item 
importiert alle Dateien im aktuellen Verzeichnisbaum, auch solche, die
normalerweise ignoriert werden würden.
        

        
	\item 
Die Benutzung von {\bf -I} ! löscht jede eventuell vorher erstellte Liste
von zu ignorierenden Dateien, auch vorher angegebene {\bf -I}-Optionen. Alle
darauf folgenden {\bf -I}-Optionen werden jedoch berücksichtigt. Daher ist
        
       \end{list}
      \end{list}

      
       \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs import -I ! -I README.txt -m ''Mitteilung'' projekt BLA BLA\_0
        \end{scriptsize} \end{tt} \linebreak 
      

      \begin{list}{*}{}
       \begin{list}{*}{}
        
	\item 
nicht dasselbe wie
        
       \end{list}
      \end{list}

      
       \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs import -I README.txt -I ! -m ''Mitteilung'' projekt BLA BLA\_0
        \end{scriptsize} \end{tt} \linebreak 
      

      \begin{list}{*}{}
       \begin{list}{*}{}
        
	\item 
Im ersten Fall wird {\bf README.txt} nicht importiert, im letzteren Fall schon.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -k METHODE}
       

       \begin{list}{*}{}
        
	\item 
Legt die Methode zur RCS-Schlüsselwortersetzung für die importierten
Dateien fest. (Für eine Liste gültiger Methoden siehe auch
{\bf Schlüsselwortersetzung} später in diesem Kapitel.)
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -m MITTEILUNG}
       

       \begin{list}{*}{}
        
	\item 
Zeichnet die MITTEILUNG als die Import-Log-Mitteilung auf.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -W FILTER}
       

       \begin{list}{*}{}
        
	\item 
Spezifiziert dateinamenbasierte Filter, die für import gültig sein
sollen. Diese Option kann mehrfach verwendet werden. (Zu Details über
diese Filter siehe auch {\bf CVSROOT/cvswrappers} im Abschnitt
{\bf Archivverwaltungsdateien}.)
        
       \end{list}
      \end{list}
     

     \subsubsection{init NEUES\_ARCHIV} \label{d78e4199}
        
      

      
  \par
  
Alternativen: Keine \linebreak 
Erfordert: Einen Platz für das neue Archiv \linebreak 
Ändert: Archiv
      

      
  \par
  
Erzeugt ein neues Archiv (also ein Hauptarchiv, in dem dann viele
verschiedene Projekte abgelegt werden können). Fast immer werden Sie
hier die globale Option {\bf -d} verwenden wollen, so wie in
      

      
       \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs -d /usr/local/neues\_archiv init
        \end{scriptsize} \end{tt} \linebreak 
      

      
  \par
  
denn selbst wenn Sie eine CVSROOT-Umgebungsvariable gesetzt haben,
zeigt diese wahrscheinlich auf ein bereit existentes Archiv, was im
Zusammenhang mit diesem Befehl nutzlos oder gar gefährlich sein
könnte. (Zu weiteren Schritten, die nach der Initialisierung eines
Archivs unternommen werden sollten, siehe Kapitel 4.)
      

      
  \par
  
Optionen: Keine
      
     

     \subsubsection{kserver} \label{d78e4230}
        
      

      
  \par
  
Dies ist der Kerberos-Server. (Falls Sie Kerberos-Bibliotheken Version
4 oder kleiner haben - Version 5 verwendet nur GSSAPI, siehe
{\bf gserver}.) Dieses Kommando wird normalerweise nicht direkt von
Benutzern gestartet. Es wird hingegen serverseitig gestartet, wenn ein
Benutzer von einem Gastrechner mit der :kserver: Zugriffsmethode eine
Verbindung aufbaut:
      

      
       \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs -d :kserver:jrandom@floss.red-bean.com:/usr/local/repos checkout projekt
        \end{scriptsize} \end{tt} \linebreak 
      

      
  \par
  
Die Konfiguration und Benutzung von Kerberos auf Ihrer Maschine an
dieser Stelle zu erläutern, würde den Umfanges dieses Buches
überschreiten. (Für einige nützliche Hinweise siehe auch den Abschnitt
{\bf Kerberos Authenticated} im Cederqvist.)
      

      
  \par
  
Optionen: Keine
      
     

     \subsubsection{log [OPTIONEN] [DATEIEN]} \label{d78e4257}
        
      

      
  \par
  
Alternativen: lo, rlog \linebreak 
Erfordert: Arbeitskopie, Archiv \linebreak 
Ändert: Nichts
      

      
  \par
  
Zeigt Log-Einträge für ein Projekt oder Dateien innerhalb eines
Projektes an. Die Ausgabe von log ist nicht gerade im selben Stil wie
die Ausgaben anderer CVS-Kommandos, da log auf einem älteren
RCS-Programm basiert (rlog). Sein Ausgabeformat enthält einen
Kopfteil, in dem verschiedene, nicht revisionsspezifische Details über
die Datei enthalten sind, gefolgt von den eigentlichen
Log-Mitteilungen (geordnet nach Revision). Jede Revision enthält nicht
nur die Revisionsnummer und eine Mitteilung, sondern auch den Autor
und das Datum der Änderung sowie die Anzahl der hinzugefügten oder
gelöschten Zeilen. Alle Zeitangaben werden in UTC (GMT) angegeben,
nicht Lokalzeit.
      

      
  \par
  
Da log-Ausgaben dateiweise erfolgen, muss ein einzelner {\bf Commit}, der
mehrere Dateien umfaßt, nicht unbedingt auch in geschlossener Form
erscheinen. Wenn Sie jedoch alle Log-Mitteilungen und Daten aufmerksam
verfolgen, dann ist es möglich zu rekonstruieren, was vorging. (Für
Informationen über ein Programm, das mehrere Log-Dateien zu einer
wesentlich lesbareren Form zusammenfassen kann, siehe auch {\bf cvs2cl.pl:
die Erzeugung von Change-Logs im GNU-Stil aus CVS Logs}
in Kapitel 10; siehe auch {\bf history}.)
      

      
  \par
  
Optionen:
      

      
  \par
  
Wenn Sie die folgenden Filteroptionen betrachten, wird möglicherweise
nicht auf Anhieb klar, wie diese sich verhalten, wenn man sie
kombiniert. Eine exakte Beschreibung des Verhaltens von log ist die,
dass es stets die Schnittmenge der mit {\bf -d}, {\bf -s} und {\bf -w} selektierten
Revisionen, geschnitten mit der Vereinigungsmenge der mit {\bf -b} und {\bf -r}
gewählten, anzeigt.
      

      \begin{list}{*}{}
       
	\item 
{\bf -b}
       

       \begin{list}{*}{}
        
	\item 
Gibt nur Log-Informationen über den Standardentwicklungszweig aus
(üblicherweise die höchste Abzweigung in der Hauptentwicklungslinie).
Diese Option wird üblicherweise benutzt, um die Ausgabe von
Log-Mitteilungen aus Seitenzweigen der Entwicklung zu unterdrücken.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -dDATUM}
       

       \begin{list}{*}{}
        
	\item 
Selektiert Log-Informationen für die Revisionen, deren Datum zu dem
Datum oder zu dem Datumsbereich passt, der durch DATUM gegeben ist,
einer durch Semikola separierten Liste. Die Datumsangaben können in
jedem der üblichen Datumsformate gehalten sein (siehe {\bf Datumsformate}
weiter vorne in diesem Kapitel) und können wie folgt in Bereiche
kombiniert werden:
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf DATUM1\verb+<+DATUM2} 
       

       \begin{list}{*}{}
        
	\item 
Bezeichnet Revisionen, die zwischen DATUM1 und DATUM2 entstanden sind.
Falls DATUM1 zeitlich auf DATUM2 folgt, sollte \verb+>+ anstatt von \verb+<+
verwendet werden; sonst bleibt die Anweisung wirkungslos.
        
       \end{list}
      \end{list}

     \begin{list}{*}{}
       
	\item 
{\bf \verb+<+DATUM DATUM\verb+>+} 
       

       \begin{list}{*}{}
        
	\item 
Alle Revisionen vonDATUM oder früher.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf \verb+<+DATUM DATUM\verb+>+} 
       

       \begin{list}{*}{}
        
	\item 
Alle Revisionen vonDATUM oder später.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf DATUM} 
       

       \begin{list}{*}{}
        
	\item 
Bezeichnet die einzige aktuellste Version vom DATUM oder früher.
        
       \end{list}
      \end{list}

      
  \par
  
Sie können {\bf \verb+<+=} und {\bf \verb+>+=} anstatt von {\bf \verb+<+} und {\bf \verb+>+} verwenden, um einen
inklusiven Bereich zu definieren (ansonsten sind die Bereiche
exklusiv). Mehrere Bereiche können durch Semikola getrennt definiert
werden, so selektiert zum Beispiel
      

      
       \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs log -d''199-06-01\verb+<+1999-07-01;1999-08-01\verb+<+1999-09-01''
        \end{scriptsize} \end{tt} \linebreak 
      

      
  \par
  
alle Log-Mitteilungen für Revisionen, deren {\bf Commit} im Juni oder August
1999 durchgeführt wurde (wobei Juli ausgelassen wird). Es dürfen keine
Leerzeichen zwischen {\bf -d} und seinen Argumenten stehen.
      

      \begin{list}{*}{}
       
	\item 
{\bf -h}
       

       \begin{list}{*}{}
        
	\item 
Gibt nur den Kopfteil der Information zu jeder Datei aus, der den
Dateinamen, das Arbeitsverzeichnis, die aktuellste Revision, den
Entwicklungszweig, die Zugriffsliste, Sperren (Locks), symbolische
Namen (Marken) und die für diese Datei eingestellte Methode der
Schlüsselwortersetzung enthält. Es werden keine Log-Mitteilungen
ausgegeben.
        
       \end{list}
      \end{list}

     \begin{list}{*}{}
       
	\item 
{\bf -l}
       

       \begin{list}{*}{}
        
	\item 
Lokal; bezieht sich nur auf Dateien im aktuellen Verzeichnis.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -N}
       

       \begin{list}{*}{}
        
	\item 
Lässt die Liste der symbolischen Namen (Marken) aus dem Kopfteil weg.
Dies kann nützlich sein, wenn Ihr Projekt viele Markierungen
beinhaltet, Sie aber nur an den Log-Mitteilungen interessiert sind.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -R}
       

       \begin{list}{*}{}
        
	\item 
Gibt den Namen der RCS Datei in dem Archiv aus.
        
       \end{list}
      \end{list}

      
  \par
  
Bemerkung:
      

      
Diese Bedeutung von {\bf -R} unterscheidet sich von der sonst in
CVS-Befehlen üblichen Funktion: {\bf Rekursiv}. Daher gibt es keine
Möglichkeit, ein in Ihrer {\bf .cvsrc}-Datei für dieses Kommando vorhandenes
{\bf -l} aufzuheben. Schreiben Sie daher nicht log {\bf -l} in Ihre {\bf .cvsrc}-Datei.
      

      \begin{list}{*}{}
       
	\item 
{\bf -rREVS}
       

       \begin{list}{*}{}
        
	\item 
Zeigt Log-Informationen zu den in REVS spezifizierten Revisionen -
eine durch Kommata separierte Liste. REVS kann sowohl Revisionsnummern
als auch symbolische Namen enthalten. Bereiche können wie folgt
definiert werden:
        

        \begin{list}{*}{}
         
	\item 
{\bf REV1:REV2}
Revisionen von REV1 bis REV2 (auf demselben Entwicklungszweig!)
         

         
	\item 
{\bf :REV}
Revisionen vom Beginn der abgezweigten Version bis REV (inklusive)
         

         
	\item 
{\bf REV:}
Revisionen von REV bis zum Ende der abgezweigten Version
         

         
	\item 
{\bf ZWEIG}
Alle Revisionen einer abgezweigten Version von Anfang bis Ende
         

         
	\item 
{\bf ZWEIG1:ZWEIG2}
Mehrere Entwicklungszweige - alle Revisionen auf allen Zweigen im
angegebenen Bereich
         

         
	\item 
{\bf ZWEIG.}
Die aktuellste Revision von ZWEIG
         
        \end{list}
       \end{list}
      \end{list}

      
  \par
  
Zudem selektiert ein allein stehendes {\bf -r} ohne Argument die neueste
Revision des Standardzweiges (normalerweise der
Hauptentwicklungslinie). Leerzeichen zwischen {\bf -r} und seinem Argument
sind nicht gestattet.
      

      
  \par
  
Bemerkung:
      

      
Wenn das Argument zu {\bf -r} eine Liste ist, muss diese durch Kommata
getrennt sein, nicht durch Semikola wie in {\bf -d}.
      

      \begin{list}{*}{}
       
	\item 
{\bf -sSTATUS}
       

       \begin{list}{*}{}
        
	\item 
Findet Revisionen, deren Statusattribut mit einem der in STATUS
angegebenen Zustände übereinstimmt, eine durch Kommata separierte
Liste. Zwischen {\bf -s} und seinem Argument darf kein Leerzeichen sein.
        
       \end{list}
      \end{list}

      
  \par
  
Bemerkung:
      

      
Wenn das Argument zu {\bf -s} eine Liste ist, muss diese durch Kommata
getrennt sein, nicht durch Semikola wie in {\bf -d}.
      

      \begin{list}{*}{}
       
	\item 
{\bf -t}
       

       \begin{list}{*}{}
        
	\item 
Wie {\bf -h}, beinhaltet aber zusätzlich die Dateibeschreibung (die beim
ersten Erstellen der Datei entstand).
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -wBENUTZER}
       

       \begin{list}{*}{}
        
	\item 
Findet Revisionen, deren {\bf Commit} die Benutzer veranlasst haben, die in
der durch Kommata separierten Liste BENUTZER aufgelistet sind. Ein {\bf -w}
ohne Argumente bewirkt eine Suche nach dem Benutzer, der cvs log
gestartet hat. Bedenken Sie, dass, wenn Benutzer-Aliasing aktiviert
ist, CVS den CVS-Benutzernamen anstatt des Systembenutzernamens beim
{\bf commit} aufzeichnet. Leerzeichen zwischen {\bf -w} und seinem Argument sind
nicht möglich.
        
       \end{list}
      \end{list}

      
  \par
  
Bemerkung:
      

      
Wenn das Argument zu {\bf -w} eine Liste ist, muss diese durch Kommata
getrennt sein, nicht durch Semikola wie in {\bf -d}.
      
     

     \subsubsection{login} \label{d78e4675}
        
      

      
  \par
  
Alternativen: logon, lgn \linebreak 
Erfordert: Archiv \linebreak 
Ändert: \~{}/.cvspass-Datei
      

      
  \par
  
Kontaktiert einen CVS-Server und überprüft die Zugangsberechtigung für
ein bestimmtes Archiv. Dieses Kommando beeinflusst weder das Archiv
noch eine Arbeitskopie; es überprüft lediglich das Passwort (zur
Nutzung mit der :pserver:-Zugriffsmethode) für ein Archiv und
speichert das Passwort zur späteren Benutzung in der {\bf .cvspass}-Datei in
Ihrem Home-Verzeichnis. Zukünftige Kommandos, die auf dasselbe Archiv
mit demselben Benutzernamen zugreifen, erfordern dann kein erneutes
Starten von {\bf login}, da Ihr CVS einfach die Datei{\bf .cvspass} konsultiert,
um das Passwort zu erfahren.
      

      
  \par
  
Wenn Sie dieses Kommando verwenden, dann sollten Sie ein Archiv unter
Verwendung der pserver-Zugriffsmethode angeben, beispielsweise
      

      
       \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs -d :pserver:jrandom@floss.red-bean.com:/usr/local/archiv
        \end{scriptsize} \end{tt} \linebreak 
      

      
  \par
  
oder durch Setzen der CVSROOT-Umgebungsvariablen.
      

      
  \par
  
Wenn sich das Passwort auf dem Server ändert, müssen Sie {\bf login} erneut starten.
      

      
  \par
  
Optionen: Keine
      
     

     \subsubsection{logout} \label{d78e4721}
        
      

      
  \par
  
Alternativen: Keine \linebreak 
Erfordert: \~{}/.cvspass-Datei \linebreak 
Ändert: \~{}/.cvspass-Datei
      

      
  \par
  
Das Gegenteil von {\bf login} - entfernt das Passwort für das angegebene
Archiv aus der {\bf .cvspass}-Datei.
      

      
  \par
  
Optionen: Keine
      
     

     \subsubsection{pserver} \label{d78e4746}
        
      

      
  \par
  
Alternativen: Keine \linebreak 
Erfordert: Archiv  \linebreak 
Ändert: Nichts
      

      
  \par
  
Pserver ist der passwortauthentisierende Server. Dieser Befehl wird
normalerweise nicht direkt von Benutzern ausgeführt. Er wird vielmehr
durch /etc/inet.conf gestartet, wenn ein Benutzer von einem
Gastrechner mit der :pserver:-Zugriffsmethode eine Verbindung aufbaut.
(Siehe auch {\bf login}, {\bf logout} und {\bf .cvspass} im Abschnitt
{\bf Laufzeit-Kontrolldateien} in diesem Kapitel. Für Details zur
Konfiguration eines passwortauthentisierenden CVS-Servers siehe
Kapitel 4.)
      

      
  \par
  
Optionen: keine
      
     

     \subsubsection{rdiff [OPTIONEN] PROJEKTE} \label{d78e4777}
        
      

      
  \par
  
Alternativen: patch, pa \linebreak 
Erfordert: Archiv \linebreak 
Ändert: Nichts
      

      
  \par
  
Wie das {\bf diff}-Kommando, mit dem Unterschied, dass es direkt im Archiv
arbeitet und daher keine Arbeitskopie erfordert. Dieses Kommando ist
zur Ermittlung von Unterschieden zwischen verschiedenen Versionen
Ihrer Projekte gedacht. Die Ausgabe erfolgt in einem Format, das als
Eingabe für das patch-Programm verwendet werden kann (sodass Sie ggf.
Patches für Benutzer verteilen können, die Ihre Programme aktualisieren
möchten).
      

      
  \par
  
Die Benutzung des Programmes patch liegt außerhalb des Themenbereiches
dieses Buches. Seien Sie trotzdem darauf hingewiesen, dass die
Verwendung der Option {\bf -p} für patch erforderlich sein kann, wenn die
Patch-Datei Änderungen für Dateien in Unterverzeichnissen enthält, um
patch dazu zu bringen, die Aktualisierung erfolgreich durchzuführen.
(Siehe die Dokumentation zu patch für weitere Informationen; siehe
auch {\bf diff}.)
      

      
  \par
  
Optionen:
      

      \begin{list}{*}{}
       
	\item 
{\bf -c}
       

       \begin{list}{*}{}
        
	\item 
Erzeugt Ausgaben im context-{\bf diff}-Format (Standardeinstellung).
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -D DATUM oder -D DATUM1 -D DATUM2}
       

       \begin{list}{*}{}
        
	\item 
Mit einem Datum erzeugt diese Option die Unterschiede zwischen den
Dateien zum Zeitpunkt DATUM und der aktuellsten Revision. Mit zwei
Daten wird der Unterschied der Dateien zu den jeweiligen Daten
festgestellt.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -f}
       

       \begin{list}{*}{}
        
	\item 
Erzwingt die Verwendung der ersten Revision, falls eine gegebene
Revision mit {\bf -D} oder {\bf -r} nicht gefunden werden kann.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -l}
       

       \begin{list}{*}{}
        
	\item 
Lokal; vergleicht nur Dateien aus dem aktuellen Verzeichnis.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -R}
       

       \begin{list}{*}{}
        
	\item 
Rekursiv; Unterverzeichnisse werden ebenfalls behandelt. Da dies das
Standardverhalten ist, dient {\bf -R} lediglich zur Änderung des Verhaltens
der {\bf -l}-Option in {\bf .cvsrc}-Dateien.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -r REV oder -r REV1 -r REV2}
       

       \begin{list}{*}{}
        
	\item 
Mit einer {\bf -r}-Option wird die mit REV bezeichnete Revision aus dem
Archiv mit der aktuellen Arbeitskopie verglichen. Bei Angabe zweier
{\bf -r}-Argumente wird der Unterschied zwischen den jeweilig angegebenen
Revisionen aus dem Archiv ermittelt.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -s}
       

       \begin{list}{*}{}
        
	\item 
Zeigt eine Zusammenfassung der Unterschiede an. Es wird gezeigt,
welche Dateien hinzugefügt, geändert oder entfernt wurden, ohne die
konkreten Veränderungen am Inhalt aufzulisten. Die Ausgabe sieht so
aus:
        
       \end{list}
      \end{list}

      
       \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs -Q rdiff -s -D 1999-08-20 myproj
        \end{scriptsize} \end{tt} \linebreak 
       \begin{tt} \begin{scriptsize} File myproj/Random.txt is new; current revision 1.4\end{scriptsize} \end{tt} \linebreak
       \linebreak\begin{tt} \begin{scriptsize} File myproj/README.txt changed from revision 2.1 to 2.20\end{scriptsize} \end{tt} \linebreak
       \linebreak\begin{tt} \begin{scriptsize} File myproj/baar is new; current revision 2.3\end{scriptsize} \end{tt} \linebreak
      

      \begin{list}{*}{}
       
	\item 
{\bf -t}
       

       \begin{list}{*}{}
        
	\item 
Zeigt die Unterschiede zwischen den zwei aktuellsten Revisionen jeder
Datei. Dies ist eine praktische Abkürzung zur Ermittlung der letzten
Änderungen an einem Projekt. Diese Option kann nicht in Verbindung mit
{\bf -D} und {\bf -r} verwendet werden.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -u}
       

       \begin{list}{*}{}
        
	\item 
Erzeugt Ausgabe im unified {\bf diff}-Format. Ältere Versionen des
Programmes patch können mit dem unified {\bf diff}-Format nicht umgehen;
darum verwenden Sie diese Option besser nicht, um einen
distributionsfähigen Patch zu erzeugen; benutzen Sie hingegen {\bf -c}.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -V (Überholt)}
       

       \begin{list}{*}{}
        
	\item 
CVS erzeugt eine Fehlermeldung, wenn Sie versuchen sollten, diese
Option noch zu verwenden. Ich führe sie hier nur mit auf, falls Sie
sie einmal in einem alten Skript finden sollten.
        
       \end{list}
      \end{list}
     

     \subsubsection{release [Optionen] VERZEICHNIS} \label{d78e5012}
        
      

      
  \par
  
Alternativen: re, rel \linebreak 
Erfordert: Arbeitskopie \linebreak 
Ändert: Arbeitskopie, CVSROOT/history
      

      
  \par
  
Meldet eine Arbeitskopie vom Archiv ab (markiert sie als nicht länger
in Gebrauch). Im Gegensatz zu den meisten anderen CVS-Befehlen, die
auf eine Arbeitskopie wirken, wird dieser Befehl nicht aus dem
Verzeichnis der Arbeitskopie heraus aufgerufen, sondern aus dem direkt
darüber liegenden (dem Mutterverzeichnis). Sie müssen entweder
Ihre {\bf CVSROOT}-Umgebungsvariable setzen oder die globale Option {\bf -d}
verwenden, da CVS sonst nicht in der Lage ist, das Archiv von der
Arbeitskopie herauszufinden.
      

      
  \par
  
Die Benutzung von release ist nie erforderlich. Da CVS normalerweise
keine Referenzen auf Arbeitskopien führt, können Sie Ihre Arbeitskopie
auch einfach löschen.
      

      
  \par
  
Falls Sie jedoch Änderungen in Ihrer Arbeitskopie haben, von denen Sie
noch keinen {\bf Commit} durchgeführt haben, oder wenn Sie möchten, dass das
Beenden Ihrer Arbeit als Ereignis in der {\bf CVSROOT/history}-Datei
vermerkt wird (siehe das {\bf history}-Kommando), dann sollten Sie release
verwenden.
      

      
  \par
  
Optionen:
      

      \begin{list}{*}{}
       
	\item 
{\bf -d}
       

       \begin{list}{*}{}
        
	\item 
Löscht die Arbeitskopie, wenn die Abmeldung erfolgreich war. Ohne {\bf -d}
bleibt die Arbeitskopie auf der Platte auch nach dem Release erhalten.
        
       \end{list}
      \end{list}

      
  \par
  
Bemerkung:
      

      
Falls Sie irgendwelche neuen Verzeichnisse innerhalb Ihrer
Arbeitskopie erzeugt haben, diese aber nicht dem Archiv hinzugefügt
wurden, dann werden sie zusammen mit dem Rest der Arbeitskopie
gelöscht, wenn Sie {\bf -d} verwenden.
      
     

     \subsubsection{remove [OPTIONEN] [DATEIEN]} \label{d78e5079}
        
      

      
  \par
  
Alternativen: rm, delete \linebreak 
Erfordert: Arbeitskopie \linebreak 
Ändert: Arbeitskopie
      

      
  \par
  
Entfernt eine Datei aus einem Projekt. Normalerweise wird die Datei direkt von
der Platte gelöscht, wenn Sie dieses
Kommando aufrufen (siehe jedoch {\bf -f}). Obwohl dieser Befehl normalerweise rekursiv
arbeitet, ist es üblich, die zu löschenden
Dateien einzeln explizit zu benennen. Beachten Sie die Merkwürdigkeit im letzten
Satz: Üblicherweise starten Sie cvs remove
für Dateien, die in Ihrer Arbeitskopie gar nicht mehr existieren.
      

      
  \par
  
Obwohl das Archiv zur Bestätigung kontaktiert wird, werden die Dateien
nicht wirklich gelöscht, bis später ein {\bf commit} durchgeführt wird. Und
selbst dann wird die RCS-Datei nicht wirklich aus dem Archiv gelöscht;
wenn sie aus der Hauptentwicklungslinie stammt, wird sie lediglich in
ein Attic/-Unterverzeichnis verschoben, wo sie noch immer für andere
Entwicklungszweige zur Verfügung steht. Stammt sie aus einem Zweig,
dann wird sie nicht bewegt, aber eine neue Revision mit dem Status
{\bf dead}2 auf der abgezweigten Version erzeugt (siehe auch add.)
      

      
  \par
  
Optionen:
      

      \begin{list}{*}{}
       
	\item 
{\bf -f}
       

       \begin{list}{*}{}
        
	\item 
Löscht die Datei vor dem Löschen im CVS zunächst von der Platte. Diese
Bedeutung von {\bf -f} unterscheidet sich von der sonst in CVS-Befehlen
üblichen Funktion: {\bf Erzwinge ggf. aktuellste Revision.}
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -l}
       

       \begin{list}{*}{}
        
	\item 
Lokal; der Befehl bezieht sich nur auf das aktuelle Arbeitsverzeichnis.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -R}
       

       \begin{list}{*}{}
        
	\item 
Rekursiv; Unterverzeichnisse werden ebenfalls behandelt. Da dies das
Standardverhalten ist, dient {\bf -R} lediglich zur Änderung des Verhaltens
der {\bf -l}-Option in {\bf .cvsrc}-Dateien.
        
       \end{list}
      \end{list}
     

     \subsubsection{rtag [OPTIONEN] MARKE PROJEKT(E)} \label{d78e5170}
        
      

      
  \par
  
Alternativen: rt, rfreeze \linebreak 
Erfordert: Archiv \linebreak 
Ändert: Archiv
      

      
  \par
  
Markiert ein Modul direkt im Archiv (erfordert keine Arbeitskopie).
Sie sollten Ihre CVSROOT-Umgebungsvariable korrekt gesetzt haben oder
die Option {\bf -d} benutzen, damit dieses Kommando funktioniert (siehe
auch tag).
      

      
  \par
  
Optionen:
      

      \begin{list}{*}{}
       
	\item 
{\bf -a}
       

       \begin{list}{*}{}
        
	\item 
Entfernt Markierungen von allen {\bf gelöschten} Dateien, da diese
lediglich aus historischen Gründen noch im Archiv vorhanden sind,
nicht aber länger als Bestandteil des aktiven Projektes betrachtet
werden. Obwohl es nicht erlaubt ist, Dateien mit einem symbolischen
Namen zu markieren, der bereits an anderer Stelle verwendet wird,
sollte es keine Probleme geben, falls diese Marke nur noch in
{\bf gelöschten} Dateien Verwendung findet (die aus der Sicht des
aktuellen Projektes ja nicht mehr länger existent sind).
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -b}
       

       \begin{list}{*}{}
        
	\item 
Erzeugt eine neue abgezweigte Version mit dem Namen MARKE.
        
       \end{list}
      \end{list}

     \begin{list}{*}{}
       
	\item 
{\bf -D DATUM}
       

       \begin{list}{*}{}
        
	\item 
Markiert die neuesten Revisionen, die nicht neuer als DATUM sind.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -d}
       

       \begin{list}{*}{}
        
	\item 
Löscht die Markierung mit dem symbolischen Namen MARKE. Diese Änderung
wird nicht protokolliert - die Markierung verschwindet einfach. CVS
führt keine Protokolle der Änderungen an Markierungen.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -F}
       

       \begin{list}{*}{}
        
	\item 
Erzwingt die Neuvergabe des symbolischen Namens, falls dieser bereits
für irgendeine andere Revision in der Datei vergeben sein sollte.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -f}
       

       \begin{list}{*}{}
        
	\item 
Erzwingt die Verwendung der ersten Revision, falls eine gegebene
Bezeichnung oder Revision nicht gefunden werden kann (siehe {\bf -D} und
{\bf -r}).
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -l}
       

       \begin{list}{*}{}
        
	\item 
Lokal; der Befehl bezieht sich nur auf das aktuelle Arbeitsverzeichnis.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -n}
       

       \begin{list}{*}{}
        
	\item 
Verhindert die Ausführung von markierungsabhängigen Programmen, die in
CVSROOT/modules angegeben sein könnten. (Siehe auch den Abschnitt
{\bf Archivverwaltungsdateien} für weitere Details zu diesen Programmen.)
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -R}
       

       \begin{list}{*}{}
        
	\item 
Rekursiv; Unterverzeichnisse werden ebenfalls behandelt. Da dies das
Standardverhalten ist, dient {\bf -R} lediglich zur Änderung des Verhaltens
der {\bf -l}-Option in {\bf .cvsrc}-Dateien.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -r REV}
       

       \begin{list}{*}{}
        
	\item 
Markiert Revision REV. (Dabei kann REV wieder ein symbolischer Name sein.)
        
       \end{list}
      \end{list}
     

     \subsubsection{server} \label{d78e5366}
        
      

      
  \par
  
Startet einen CVS-Server. Dieser Befehl wird niemals von Benutzern
ausgeführt (außer sie versuchen, Fehler im Client/Server-Protokoll zu
finden), daher vergessen Sie einfach, dass ich ihn überhaupt erwähnt
habe.
      

      
  \par
  
Optionen: Keine
      
     

     \subsubsection{status [OPTIONEN] [DATEIEN]} \label{d78e5378}
        
      

      
  \par
  
Alternativen: st, stat \linebreak 
Erfordert: Arbeitskopie \linebreak 
Ändert: Nichts
      

      
  \par
  
Zeigt den Status von Dateien in der Arbeitskopie an.
      

      
  \par
  
Optionen:
      

      \begin{list}{*}{}
       
	\item 
{\bf -l}
       

       \begin{list}{*}{}
        
	\item 
Lokal; der Befehl bezieht sich nur auf das aktuelle
Arbeitsverzeichnis. Eventuelle Unterverzeichnisse werden nicht
behandelt.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -R}
       

       \begin{list}{*}{}
        
	\item 
Rekursiv; Unterverzeichnisse werden ebenfalls behandelt. Da dies das
Standardverhalten ist, dient {\bf -R} lediglich zur Änderung des Verhaltens
der {\bf -l}-Option in {\bf .cvsrc}-Dateien.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -v}
       

       \begin{list}{*}{}
        
	\item 
Zeigt symbolische Namen (Markierungen) für die Datei an.
        
       \end{list}
      \end{list}
     

     \subsubsection{tag [OPTIONEN] MARKIERUNG [DATEIEN]} \label{d78e5451}
        
      

      
  \par
  
Alternativen: ta, freeze \linebreak 
Erfordert: Arbeitskopie, Archiv \linebreak 
Ändert: Archiv
      

      
  \par
  
Gibt einer bestimmten Revision oder einer Reihe von Revisionen eines
Projektes einen symbolischen Namen. Oft nennt man diesen Vorgang auch
{\bf eine Momentaufnahme des Projektes machen}. Dieser Befehl wird
ebenfalls dazu verwendet, neue Entwicklungszweige in CVS zu erzeugen
(siehe die {\bf -b}-Option; siehe auch rtag).
      

      
  \par
  
Optionen:
      


      \begin{list}{*}{}
       
	\item 
{\bf -b}
       

       \begin{list}{*}{}
        
	\item 
Erzeugt eine neue abgezweigte Version mit dem Namen MARKE.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -c}
       

       \begin{list}{*}{}
        
	\item 
Stellt sicher, dass die Arbeitskopie keine Änderungen beinhaltet, die
noch nicht mit einem {\bf Commit} bestätigt wurden. Sollte dies der Fall
sein, wird eine Warnung ausgegeben und keine Markierung erzeugt.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -D DATE}
       

       \begin{list}{*}{}
        
	\item 
Markiert die neuesten Revisionen, die nicht neuer als DATUM sind.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -d}
       

       \begin{list}{*}{}
        
	\item 
Löscht die Markierung mit dem symbolischen Namen MARKE. Diese Änderung
wird nicht protokolliert - die Markierung verschwindet einfach. CVS
führt keine Protokolle der Änderungen an Markierungen.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -F}
       

       \begin{list}{*}{}
        
	\item 
Erzwingt die Neuvergabe des symbolischen Namens, falls dieser bereits
für irgendeine andere Revision in der Datei vergeben sein sollte.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -f}
       

       \begin{list}{*}{}
        
	\item 
Erzwingt die Verwendung der ersten Revision, falls eine gegebene
Bezeichnung oder Revision nicht gefunden werden kann (siehe {\bf -D} und
{\bf -r}).
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -l}
       

       \begin{list}{*}{}
        
	\item 
Lokal; der Befehl bezieht sich nur auf das aktuelle Arbeitsverzeichnis.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -R}
       

       \begin{list}{*}{}
        
	\item 
Rekursiv; Unterverzeichnisse werden ebenfalls behandelt. Da dies das
Standardverhalten ist, dient {\bf -R} lediglich zur Änderung des Verhaltens
der {\bf -l}-Option in {\bf .cvsrc}-Dateien.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -r REV}
       

       \begin{list}{*}{}
        
	\item 
Markiert Revision REV (welche selber ein symbolischer Name sein kann).
        
       \end{list}
      \end{list}
     

     \subsubsection{unedit [OPTIONEN] [DATEIEN]} \label{d78e5629}
        
      

      
  \par
  
Alternativen: Keine \linebreak 
Erfordert: Arbeitskopie, Archiv \linebreak 
Ändert: Arbeitskopie
      

      
  \par
  
Signalisiert Beobachtern, dass Sie mit dem Bearbeiten einer Datei
fertig sind (siehe auch {\bf watch}, {\bf watchers}, {\bf edit} und {\bf editors}).
      

      
  \par
  
Optionen:
      

      \begin{list}{*}{}
       
	\item 
{\bf -l}
       

       \begin{list}{*}{}
        
	\item 
Lokal; signalisiert nur für Dateien im aktuellen Verzeichnis.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -R}
       

       \begin{list}{*}{}
        
	\item 
Rekursiv; Unterverzeichnisse werden ebenfalls behandelt. Da dies das
Standardverhalten ist, dient {\bf -R} lediglich zur Änderung des Verhaltens
der {\bf -l}-Option in {\bf .cvsrc}-Dateien.
        
       \end{list}
      \end{list}
     

     \subsubsection{update [OPTIONEN] [DATEIEN]} \label{d78e5699}
        
      

      
  \par
  
Alternativen: up, upd \linebreak 
Erfordert: Arbeitskopie, Archiv \linebreak 
Ändert: Arbeitskopie
      

      
  \par
  
Überführt Änderungen aus dem Archiv in Ihre Arbeitskopie. Als
Seiteneffekt wird angezeigt, welche Dateien in Ihrer Arbeitskopie
verändert wurden. (Falls jedoch die globale Option {\bf -Q} verwendet wird,
unterbleibt diese Anzeige; siehe auch {\bf checkout}.)
      

      
  \par
  
Optionen:
      

      \begin{list}{*}{}
       
	\item 
{\bf -A}
       

       \begin{list}{*}{}
        
	\item 
Löscht alle gebundenen Markierungen, Daten oder
RCS-Schlüsselwortersetzungs-Methoden. Dies kann zu Veränderungen im
Inhalt von Dateien führen, falls sich die aktuellsten Revisionen der
Hauptentwicklungslinie von den bisher durch Bindungen festgelegten
unterscheiden. (Sehen Sie {\bf -A} einfach als einen neuen {\bf Checkout} des
Projekthauptzweiges an.)
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -D DATUM}
       

       \begin{list}{*}{}
        
	\item 
Aktualisiert bis zur letzten Revision, die nicht älter als DATUM ist.
Diese Option wirkt bindend und impliziert {\bf -P}. Sollte das Datum der
Arbeitskopie gebunden sein, dann sind keine {\bf Commits} möglich.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -d}
       

       \begin{list}{*}{}
        
	\item 
Holt fehlende Verzeichnisse, also Verzeichnisse, die im Archiv
existieren, aber in der Arbeitskopie noch nicht vorhanden sind. Solche
Verzeichnisse könnten im Archiv angelegt worden sein, nachdem die
Arbeitskopie zuletzt per {\bf Checkout} übertragen wurde. Ohne diese Option
arbeitet {\bf update} nur auf Verzeichnissen, die bereits in der
Arbeitskopie vorhanden sind; neue Dateien werden aus dem Archiv
geholt, neue Verzeichnisse aber nicht (siehe auch {\bf -P}).
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -f}
       

       \begin{list}{*}{}
        
	\item 
Erzwingt die Verwendung der aktuellsten Revision, falls eine mittels
{\bf -D} oder {\bf -r} gegebene Revision nicht gefunden werden kann.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -I NAME}
       

       \begin{list}{*}{}
        
	\item 
Wie die {\bf -I}-Option des Befehles import.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -j REV[:DATUM] oder -j REV1[:DATUM] -j REV2[:DATUM]}
       

       \begin{list}{*}{}
        
	\item 
Vereinigt zwei Entwicklungszweige. Wenn wir das optionale
DATUM-Argument zunächst ignorieren (darauf wird später eingegangen),
dann funktioniert {\bf -j} so: Wenn nur ein {\bf -j} gegeben ist, dann werden alle
Veränderungen vom Zeitpunkt der Abspaltung des Entwicklungszweiges an
bis zur Revision REV genommen und mit der Arbeitskopie vereinigt.
Dabei entspricht der Zeitpunkt der Abspaltung der letzten Revision,
die der Entwicklungszweig im Arbeitsverzeichnis und die abgezweigte
Versionslinie von REV gemeinsam haben. Werden zwei {\bf -j}-Optionen
angegeben, werden die Veränderungen von REV1 bis REV2 in die
Arbeitskopie integriert.
        

        
	\item 
Die speziellen Bezeichner HEAD und BASE dürfen als Argumente für {\bf -j}
verwendet werden; sie bezeichnen die aktuellste Revision im Archiv
respektive die Revision im Archiv, auf der die aktuelle Arbeitskopie
basiert.
        

        
	\item 
Was das optionale DATUM angeht: Falls sich REV auf eine abgezweigte
Version bezieht, bezeichnet es normalerweise die neueste Revision auf
diesem Zweig, Sie können jedoch diese auf die neueste Revision vor
einem beliebigen DATUM beschränken. Das Datum sollte von der Revision
durch einen Doppelpunkt ohne Leerzeichen abgetrennt sein wie in
folgendem Beispiel:
        
       \end{list}
      \end{list}

      
       \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs update -j einZweig:1999-07-01 -j einZweig:1999-08-01
        \end{scriptsize} \end{tt} \linebreak 
      

      \begin{list}{*}{}
       \begin{list}{*}{}
        
	\item 
In diesem Beispiel werden unterschiedliche Datumsangaben auf demselben
Entwicklungszweig verwendet, sodass hier im Endeffekt die
Veränderungen auf dem Entwicklungszweig {\bf einZweig} zwischen Juli und
August genommen und in die Arbeitskopie integriert werden. Beachten
Sie jedoch, dass der Entwicklungszweig nicht notwendigerweise in
beiden {\bf -j}-Optionen derselbe sein muss.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -k METHODE}
       

       \begin{list}{*}{}
        
	\item 
Verwendet RCS-Schlüsselwortersetzung gemäß der angegebenen METHODE.
(Siehe auch den Abschnitt zur Schlüsselwortersetzung weiter hinten in
diesem Kapitel.) Die gewählte Methode wirkt für die betroffenen
Dateien bindend - spätere Aktualisierungen der Arbeitskopie werden
davon betroffen (siehe aber {\bf -A}).
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -l}
       

       \begin{list}{*}{}
        
	\item 
Lokal: aktualisiert nur das aktuelle Arbeitsverzeichnis.
       
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -P}
       

       \begin{list}{*}{}
        
	\item 
Leere Verzeichnisse werden gelöscht. Alle CVS-kontrollierten
Verzeichnisse, die am Ende der Aktualisierung keine Dateien mehr
enthalten, werden aus der Arbeitskopie entfernt (siehe auch {\bf -d}).
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -p}
       

       \begin{list}{*}{}
        
	\item 
Gibt die Dateiinhalte auf die Standardausgabe aus, anstatt in die
Dateien zu schreiben. Wird hauptsächlich verwendet, um zu einer
früheren Revision zurückzugehen, ohne Bindungen (Sticky Tags) in der
Arbeitskopie zu produzieren. Zum Beispiel:
        
       \end{list}
      \end{list}
      
       \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs update -p -r 1.3 README.txt \verb+>+README.txt
        \end{scriptsize} \end{tt} \linebreak 
      
      \begin{list}{*}{}
       \begin{list}{*}{}
        
	\item 
Nun hat README.txt wieder den Inhalt seiner früheren Revision 1.3,
gerade so, als hätten Sie die Änderungen von Hand zurückgenommen.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -R}
       

       \begin{list}{*}{}
        
	\item 
Rekursiv; Unterverzeichnisse werden ebenfalls behandelt. Da dies das
Standardverhalten ist, dient {\bf -R} lediglich zur Änderung des Verhaltens
der {\bf -l}-Option in {\bf .cvsrc}-Dateien.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -r REV}
       

       \begin{list}{*}{}
        
	\item 
Aktualisiert (bzw deaktualisiert oder verzweigt) auf Revision REV.
Wenn eine komplette Arbeitskopie aktualisiert wird, ist REV entweder
einfach eine Marke oder die Markierung eines Zweiges. Bei der
Aktualisierung einer einzelnen Datei kann es sich jedoch genauso gut
um eine Revisionsnummer handeln.
        

        
	\item 
Diese Option wirkt bindend. Wenn die Dateien auf eine nicht zum
aktuellen Entwicklungszweig gehörige Markierung oder Revision
verändert werden, dann können Sie keinen {\bf Commit} mehr durchführen, bis
die Bindung aufgehoben wurde (siehe {\bf -A}). Wenn REV der Name einer
abgezweigten Version war, sind {\bf Commits} jedoch möglich und neue
Revisionen fließen in diesen Zweig ein.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf -WFILTER}
       

       \begin{list}{*}{}
        
	\item 
Spezifiziert dateinamenbasierte Filter, die für das {\bf Update} gültig sein
sollen. Diese Option kann mehrfach verwendet werden. (Siehe auch
{\bf CVSROOT/cvswrappers} im Abschnitt {\bf Archivverwaltungsdateien} zu
Details über diese Filter.) Zwischen {\bf -W} und seinem Argument ist kein
Leerzeichen.
        
       \end{list}
      \end{list}
     

     \subsubsection{watch on|off|add|remove [OPTIONEN] [DATEIEN]} \label{d78e6042}
        
      

      
  \par
  
Alternativen: Keine \linebreak 
Erfordert: Arbeitskopie, Archiv \linebreak 
Ändert: Watchliste im Archiv
      

      
  \par
  
Schaltet die Beobachtung einer oder mehrerer Dateien ein. Anders als
die meisten CVS-Befehle benötigt {\bf watch} ein weiteres Subkommando, um
etwas Sinnvolles zu bewirken. (Siehe auch {\bf watchers}, {\bf edit},
{\bf editors}, {\bf unedit} und {\bf CVSROOT/users} im Abschnitt
{\bf Archivverwaltungsdateien} in diesem Kapitel.)
      

      
  \par
  
Subkommandos:
      

      \begin{list}{*}{}
       
	\item 
{\bf on}
       

       \begin{list}{*}{}
        
	\item 
Schaltet das Beobachten der Dateien ein. Das bedeutet, dass sie beim
{\bf Checkout} als nur lesbar markiert werden und Benutzer cvs edit benutzen
sollten, um sie beschreibbar zu machen (wobei alle Beobachter darüber
informiert werden, dass die Datei nun bearbeitet wird). Das
Einschalten an sich bewirkt nicht, dass Sie zur Watchliste irgendeiner
Datei hinzugefügt werden. (Siehe {\bf watch add} und {\bf watch remove} zu diesem
Problem.)
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf off}
       

       \begin{list}{*}{}
        
	\item 
Das Gegenteil von {\bf watch on}. Schaltet das Beobachten wieder ab.
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
        
	\item 
{\bf add}
        

       \begin{list}{*}{}
        
	\item 
Fügt Sie der Liste der Beobachter dieser Datei (Watchliste) hinzu. Sie
werden benachrichtigt, sobald jemand einen {\bf Commit} dieser Datei
vornimmt, {\bf cvs edit} oder {\bf cvs unedit} ausführt (siehe jedoch die
{\bf -a}-Option).
        
       \end{list}
      \end{list}

      \begin{list}{*}{}
       
	\item 
{\bf remove}
       

       \begin{list}{*}{}
        
	\item 
Das Gegenteil von {\bf watch add}. Entfernt Sie aus der Watchliste dieser Datei.
        

        
	\item 
Optionen (zur Benutzung mit jedem der {\bf watch}-Subkommandos). Alle drei
Optionen haben dieselbe Bedeutung wie für {\bf edit}:
        
       \end{list}

       \begin{list}{*}{}
        
	\item 
{\bf -a AKTIONEN}
        

        
	\item 
{\bf -l}
        

        
	\item 
{\bf -R}
        
       \end{list}
      \end{list}
     

     \subsubsection{watchers [OPTIONEN] [DATEIEN]} \label{d78e6199}
        
      

      
  \par
  
Alternativen: Keine \linebreak 
Erfordert: Arbeitskopie, Archiv \linebreak 
Ändert: Nichts
      

      
  \par
  
Zeigt an, wer Dateien beobachtet.
      

      
  \par
  
Optionen - Diese Optionen haben dieselbe Bedeutung wie für {\bf edit}:
      

      \begin{list}{*}{}
       
	\item 
{\bf -l}
       

       
	\item 
{\bf -R}
       
      \end{list}
    
   
  \section{Schlüsselwortersetzung (RCS-Schlüsselwörter)} \label{d78e6243}
        
   

   
  \par
  
CVS kann bestimmte textuelle Ersetzungen in Dateien durchführen, die
es Ihnen erlauben, einige Arten von Informationen automatisch
innerhalb Ihrer Dateien auf dem aktuellsten Stand zu halten. Alle
diese Ersetzungen werden durch ein spezielles Schlüsselwortmuster
ausgelöst, das von Dollarzeichen eingeschlossen wird. Zum Beispiel
wird
   

   
  \par
  
{\bf \$Revision\$}
   

   
  \par
  
in einer Datei zu einem Ausdruck wie
   

   
  \par
  
{\bf \$Revision: 1.5 \$}
   

   
  \par
  
und CVS wird bei jedem {\bf Commit} einer neuen Revision diese Textstelle
auf dem neuesten Stand halten.
   


   \subsection{Schlüsselwort-Expansion kontrollieren} \label{d78e6274}
        
    

    
  \par
  
Normalerweise expandiert CVS Schlüsselwörter, solange Sie ihm nicht
befehlen, das nicht zu tun. Sie können die Schlüsselwortersetzung für
eine Datei permanent verhindern, indem Sie die {\bf -k}-Option angeben, wenn
Sie die Datei dem Projekt hinzufügen, oder Sie können sie später
deaktivieren, indem Sie den Befehl admin mit der Option {\bf -k} aufrufen.
Die {\bf -k}-Option bietet mehrere verschiedene Methoden der
Schlüsselwortkontrolle; üblicherweise werden Sie {\bf o} oder {\bf b} benötigen,
wie zum Beispiel:
    

    
     \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
cvs add -ko neue\_datei.txt
      \end{scriptsize} \end{tt} \linebreak 
    

    
  \par
  
Dieser Befehl fügte die Datei {\bf neue\_datei.txt} dem Projekt hinzu, wobei
die Schlüsselwortersetzung abgeschaltet ist. Es setzt die
Schlüsselwortersetzungs-Methode der Datei auf {\bf o} fest, was so viel wie
{\bf keine Ersetzung} bedeutet. (Genau genommen steht das {\bf o} für {\bf old}3,
was bedeutet, dass das Wort mit seinem alten Wert - also durch sich
selbst - ersetzt wird, was effektiv in keiner Änderung resultiert. Ich
bin sicher, diese Logik ergab zum damaligen Zeitpunkt für
irgendjemanden einen Sinn.)
    

    
  \par
  
Die Schlüsselwortersetzungs-Methode für jede einzelne Datei wird im
Archiv gespeichert. Doch kann zudem jede Arbeitskopie ebenfalls ihre
eigene lokale Einstellung besitzen - bewirkt durch die {\bf -k}-Optionen zu
{\bf checkout} und {\bf update}. Man kann außerdem Ersetzungsmethoden mit der
{\bf -k}-Option zu {\bf diff} lediglich für die Dauer eines einzigen Befehls zur
Anwendung bringen.
    

    
  \par
  
Hier sind alle möglichen Methoden, angegeben mit vorne angefügter
{\bf -k}-Option (so, wie man sie auf der Kommandozeile schreiben würde).
Jede dieser Optionen kann sowohl als standardmäßige als auch als
lokale Schlüsselwortersetzungs-Methode für eine Datei verwendet
werden:
    

    \begin{list}{*}{}
     
	\item 
{\bf -kkv}
     

     \begin{list}{*}{}
      
	\item 
Schlüsselwort und Wert; dies ist die normale
Schlüsselwortexpansions-Methode, daher muss sie nicht explizit für
neue Dateien mit angegeben werden. Sie könnten sie jedoch benötigen,
um eine Datei mit einer anderen Methode zurückzusetzen.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -kkvl}
     

     \begin{list}{*}{}
      
	\item 
Wie {\bf -kkv}, beinhaltet aber zusätzlich den Namen desjenigen, der die
Revision gebunden hat, falls diese auf einem bestimmten Wert gehalten
wird. (Siehe die {\bf -l}-Option zum Befehl admin für mehr Informationen
dazu.)
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -kk}
     

     \begin{list}{*}{}
      
	\item 
Schreibt keine Werte in Schlüsselwortfelder, sondern benutzt lediglich
den Namen des Schlüsselwortes. Mit dieser Option würden zum Beispiel:
      
     \end{list}
    \end{list}

    
{\bf \$Revision: 1.5 \$} 
    

    
  \par
  
und
    

    
{\bf \$Revision\$} 
    

    
  \par
  
beide {\bf expandiert} (okay, eher {\bf kontrahiert}) zu:
    

    
{\bf \$Revision\$} 
    

    \begin{list}{*}{}
     
	\item 
{\bf -ko}
     

     \begin{list}{*}{}
      
	\item 
Wiederverwendung des Wortes, das in der Datei gefunden wird ({\bf o} für
{\bf old}, wie oben beschrieben), gerade so, wie es vor dem {\bf commit} in der
Arbeitskopie stand.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -kb}
     

     \begin{list}{*}{}
      
	\item 
Wie {\bf -ko}, zusätzlich wird aber noch die sonst zwischen
unterschiedlichen Plattformen übliche automatische Umwandlung von
Zeilenendungen unterdrückt. Das {\bf b} steht für {\bf binär}; es ist die
Methode, die für Binärdateien verwendet werden sollte.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -kv}
     

     \begin{list}{*}{}
      
	\item 
Ersetzt das Schlüsselwort durch seinen Wert, so wird zum Beispiel
      
     \end{list}
    \end{list}

    
{\bf \$Revision\$} 
    

    
  \par
  
umgewandelt zu:
    

    
{\bf 1.5} 
    

    
  \par
  
Natürlich wird in diesem Fall nach der ersten keine weitere Ersetzung
stattfinden, sodass diese Methode mit Bedacht verwendet werden sollte.
    
   
  \section{Liste der Schlüsselwörter} \label{d78e6514}
        
   

   
  \par
  
Hier nun all die mit Dollarzeichen abgeschlossenen Schlüssewörter, die
CVS kennt. Es folgt eine Liste mit je einem Schlüsselwort, einer
kurzen Beschreibung und einem Beispiel seiner expandierten Form.
   

   \begin{list}{*}{}
    
	\item 
{\bf \$Author\$}
    
    \begin{list}{*}{}
     
	\item 
Autor einer Änderung
     
     
	\item 
{\bf \$Author: jrandom \$}
     
    \end{list}
   \end{list}


   \begin{list}{*}{}
    
	\item 
{\bf \$Date\$}
    
    \begin{list}{*}{}
     
	\item 
Datum und Zeit einer Änderung in UTC (GMT)
     
     
	\item 
{\bf \$Date: 1999/08/23 18:21:13 \$}
     
    \end{list}
   \end{list}


   \begin{list}{*}{}
    
	\item 
{\bf \$Header\$}
    
    \begin{list}{*}{}
     
	\item 
Diverse Informationen, die von Nutzen sein könnten: Der volle Pfad zur
RCS-Datei im Archiv, Revision, Datum (UTC), Autor, Status und
eventuell Benutzer, die einen Lock auf die Datei halten. (Letzere sind
selten; in folgendem Beispiel hält jedoch der User qsmith einen
Lock.):
     
     
	\item 
{\bf \$Header: /usr/local/archiv/proj/hallo.c,v 1.1 1999/06/01 03:21:13 $\backslash$ \linebreak 
jrandom Exp qsmith \$}
     
    \end{list}
   \end{list}

   \begin{list}{*}{}
    
	\item 
{\bf \$Id\$}
    
    \begin{list}{*}{}
     
	\item 
Wie {\bf \$Header\$}, aber ohne den vollen Pfad zur RCS-Datei:
     
     
	\item 
{\bf \$Id: hallo.c,v 1.1 1999/06/01 03:21:13 jrandom Exp qmsith \$}
     
    \end{list}
   \end{list}

   \begin{list}{*}{}
    
	\item 
{\bf \$Log\$}
    
    \begin{list}{*}{}
     
	\item 
Die Log-Mitteilung für diese Revision zusammen mit Revisionsnummer,
Datum und Autor. Anders als bei anderen Schlüsselwörtern werden
frühere Ersetzungen nicht ersetzt. Sie werden stattdessen nach unten
verschoben, sodass die neueste Ersetzung immer ganz oben in einer
ständig wachsenden Liste von {\bf \$Log\$}-Nachrichten steht:
     
     
	\item 
{\bf \$Log: hallo.c,v \$ Revision 1.12 1999/07/19 06:12:43 jrandom}
     
     
	\item 
Halli hallo, eine Mitteilung
     
     
	\item 
Text, der vor dem {\bf \$Log\$}-Schlüsselwort auf derselben Zeile steht, wird
ebenfalls mit der \$Log-Mitteilung nach unten verschoben; das
geschieht, damit alles, was später expandiert wird, ebenfalls
auskommentiert ist, wenn Sie {\bf \$Log\$} in einem Kommentar in einer
Quelltextdatei verwenden.
     
    \end{list}
   \end{list}

   \begin{list}{*}{}
    
	\item 
{\bf \$Locker\$}
    
    \begin{list}{*}{}
     
	\item 
Name des Benutzers, der einen Lock auf diese Revision hält
(normalerweise niemand):
     
     
	\item 
{\bf \$Locker: qsmith \$}
     
    \end{list}
   \end{list}

   \begin{list}{*}{}
    
	\item 
{\bf \$Name\$}
    
    \begin{list}{*}{}
     
	\item 
Name der gebundenen Markierung:
     
     
	\item 
{\bf \$Name: release\_1\_14 \$}
     
    \end{list}
   \end{list}

   \begin{list}{*}{}
    
	\item 
{\bf \$RCSfile\$}
    
    \begin{list}{*}{}
     
	\item 
Name der RCS-Datei im Archiv:
     
     
	\item 
{\bf \$RCSfile: hallo.c,v \$}
     
    \end{list}
   \end{list}

   \begin{list}{*}{}
    
	\item 
{\bf \$Revision\$}
    
    \begin{list}{*}{}
     
	\item 
Revisionsnummer:
     
     
	\item 
{\bf \$Revision: 1.1 \$}
     
    \end{list}
   \end{list}

   \begin{list}{*}{}
    
	\item 
{\bf \$Source\$}
    
    \begin{list}{*}{}
     
	\item 
Vollständiger Pfad zur RCS-Datei im Archiv:
     
     
	\item 
{\bf \$Source: /usr/local/archiv/proj/hallo.c,v \$}
     
    \end{list}
   \end{list}

   \begin{list}{*}{}
    
	\item 
{\bf \$State\$}
    
    \begin{list}{*}{}
     
	\item 
Status dieser Revision:
     
     
	\item 
{\bf \$State: Exp \$} 
     
    \end{list}
   \end{list}

  \section{Archivverwaltungsdateien} \label{d78e6779}
        
   

   
  \par
  
Die Verwaltungsdateien eines Archivs werden im
{\bf CVSROOT}-Unterverzeichnis des Archivs gespeichert. Diese Dateien
kontrollieren diverse Aspekte im Verhalten von CVS (selbstverständlich
nur innerhalb dieses Archivs).
   

   
  \par
  
Generell werden die Verwaltungsdateien genauso unter
Revisionskontrolle gehalten wie alle anderen Dateien im Archiv
(Ausnahmen werden extra angemerkt). Im Gegensatz zu anderen Dateien
werden ausgecheckte Kopien der Verwaltungsdateien im Archiv jedoch
direkt neben den korrespondierenden RCS-Dateien abgespeichert. Diese
ausgecheckten Kopien üben die wirkliche Kontrolle über das Verhalten
von CVS aus.
   

   
  \par
  
Der normale Weg, um die Verwaltungsdateien zu modifizieren, ist der,
einen {\bf Checkout} auf eine Arbeitskopie des CVSROOT-Moduls durchzuführen,
die Änderungen vorzunehmen und einen {\bf Commit} zu machen. CVS
aktualisiert die ausgecheckten Dateien im Archiv automatisch (siehe
{\bf checkoutlist}). In Notfällen ist es jedoch auch möglich, die
ausgecheckten Kopien im Archiv direkt zu bearbeiten.
   

   
  \par
  
Eventuell interessieren Sie sich auch für die Beschreibung von
Verwaltungsdateien in Kapitel 4, die auch Beispiele umfasst.
   


   \subsection{Gemeinsame Syntax} \label{d78e6810}
        
    

    
  \par
  
In allen Verwaltungsdateien markiert ein \# am Zeilenbeginn einen
Kommentar; diese Zeile wird von CVS nicht beachtet. Ein Backslash {\bf $\backslash$}
vor einem Zeilenende bewirkt das Ignorieren des Zeilenumbruchs.
    

    
  \par
  
Einige der Dateien ({\bf commitinfo}, {\bf loginfo}, {\bf taginfo} und {\bf rcsinfo}) haben
weitere syntaktische Konventionen gemeinsam. Innerhalb dieser Dateien
befindet sich am linken Rand jeder Zeile ein regulärer Ausdruck (der
mit einem Datei- oder Verzeichnisnamen verglichen wird), und der Rest
der Zeile ist ein Programmaufruf, eventuell mit Argumenten, der
ausgeführt wird, sobald irgendetwas mit der Datei geschieht, auf die
der reguläre Ausdruck passt. Das Programm wird mit dem
Hauptverzeichnis des Archivs als Arbeitsverzeichnis gestartet.
    

    
  \par
  
In diesen Dateien dürfen zwei spezielle reguläre Ausdrücke verwendet
werden: ALL und DEFAULT. Der Ausdruck ALL passt für jeden beliebigen
Datei- oder Verzeichnisnamen, egal ob noch andere Ausdrücke dafür
passen oder nicht, und DEFAULT wird nur verwendet, falls keiner der
anderen Ausdrücke passt.
    
   

   \subsection{Gemeinsame Variablen} \label{d78e6842}
        
    

    
  \par
  
Die Info-Dateien erlauben des Weiteren die Expansion gewisser
Variablen zur Laufzeit. Um eine Variable zu expandieren, muss ihr ein
Dollarzeichen vorangestellt sein (und setzen Sie sie in geschweifte
Klammern, um sicherzugehen). Es folgen die Variablen, die CVS bekannt
sind:
    

    \begin{list}{*}{}
     
	\item 
{\bf \${CVSROOT}}
     
     \begin{list}{*}{}
      
	\item 
Das Hauptverzeichnis des Archivs
      
     \end{list}
    \end{list}
    \begin{list}{*}{}
     
	\item 
{\bf \${RCSBIN} (Überholt)}
     
     \begin{list}{*}{}
      
	\item 
Benutzen Sie diese Variable nicht. Sie findet nur noch in alten
CVS-Versionen (1.9.18 und älter) Verwendung.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf \${CVSEDITOR} \${VISUAL} \${EDITOR}}
     
     \begin{list}{*}{}
      
	\item 
Alle diese Variablen expandieren zu dem Editor, den CVS für
Log-Mitteilungen verwendet.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf {USER}}
     
     \begin{list}{*}{}
      
	\item 
Der Benutzer, der CVS laufen lässt (auf der Serverseite).
      
     \end{list}
    \end{list}

    
  \par
  
Benutzervariablen
    

    
  \par
  
Benutzer können zudem eigene Variablen setzen, wenn sie beliebige
CVS-Kommandos starten (siehe die globale {\bf -s}-Option). Auf diese
Variablen kann aus den {\bf *info}-Dateien zugegriffen werden, indem ihnen
ein Gleichheitszeichen vorangestellt wird wie z.B. in {\bf \${=VAR}}.
    

   

   \subsection{Liste der Archivverwaltungsdateien} \label{d78e6928}
        
    
    
  \par
  
Es folgt eine Liste aller Archivverwaltungsdateien:
    


    
  \par
  
{\bf checkoutlist}
    

    
  \par
  
Diese Datei enthält eine Liste von Dateien, von denen ausgecheckte
Kopien im Archiv gehalten werden sollten. Jede Zeile enthält einen
Dateinamen und eine Fehlermeldung, die CVS ausgeben soll, falls aus
irgendeinem Grund die Datei nicht im Archiv ausgecheckt werden kann.
    

    
  \par
  
DATEINAME FEHLERMELDUNG
    

    
  \par
  
Da CVS bereits von sich aus ausgecheckte Kopien der existierenden
Verwaltungsdateien behält, müssen diese nicht in der
{\bf checkoutlist}-Datei aufgeführt werden. Speziell die folgenden Dateien
brauchen niemals in der {\bf checkoutlist}-Datei zu stehen: {\bf loginfo},
{\bf rcsinfo}, {\bf editinfo}, {\bf verifymsg}, {\bf commitinfo}, {\bf taginfo}, {\bf ignore},
{\bf checkoutlist}, {\bf cvswrappers}, {\bf notify}, {\bf modules}, {\bf readers}, {\bf writers} und
{\bf config}.
    


    
  \par
  
{\bf commitinfo}
    

    
  \par
  
Spezifiziert Programme, die, in Abhängigkeit von den betroffenen
Dateien, bei einem {\bf Commit} gestartet werden sollen. Jede Zeile besteht
aus einem regulären Ausdruck, gefolgt von einem Kommando:
    

    
  \par
  
{\bf REGULÄRER\_AUSDRUCK PROGRAMM [ARGUMENTE]}
    

    
  \par
  
Dem Kommando werden außer den in der Datei vermerkten Argumenten
zusätzliche Parameter übergeben, und zwar der volle Pfad zum Archiv
gefolgt von den Namen aller Dateien, die per {\bf Commit} übertragen werden
sollen. Diese Dateien können durch das PROGRAMM untersucht werden; ihr
Inhalt entspricht dem der Dateien aus der Arbeitskopie, auf die {\bf commit}
angewendet werden soll. Beendet sich das PROGRAMM mit einem
Rückgabewert ungleich null, so schlägt {\bf commit} fehl; anderenfalls wird
der {\bf Commit} durchgeführt. (Siehe auch {\bf Gemeinsame Syntax} weiter vorne
in diesem Kapitel.)
    


    
  \par
  
{\bf config}
    

    
  \par
  
Kontrolliert diverse globale (nicht projektspezifische)
Archivparameter. Die Syntax jeder Zeile ist:
    

    
  \par
  
{\bf ParameterName=yes|no}
    

    
  \par
  
mit Ausnahme des LockDir Parameters, der einen absoluten Pfadnamen als
Argument benötigt.
    

    
  \par
  
Die folgenden Parameter werden unterstützt:
    

    
  \par
  
{\bf RCSBIN (normal: =no)}
    
    
  \par
  
(Überholt.) Diese Option wird aus Kompatibilitätsgründen
stillschweigend akzeptiert, hat jedoch keinerlei Wirkung mehr.
    

    
  \par
  
{\bf SystemAuth (normal: =no)}
    
    
  \par
  
Wenn {\bf yes}, dann konsultiert die pserver Authentifizierung die
Benutzerdatenbank des Systems - normalerweise {\bf /etc/passwd} - falls ein
Benutzer nicht in {\bf CVSROOT/passwd} gefunden werden kann. Wenn {\bf no}, muss
der Benutzer in {\bf CVSROOT/passwd} stehen, um Zugriff über die
{\bf :pserver:}-Methode zu erhalten.
    

    
  \par
  
{\bf PreservePermissions (normal: =no)}
    
    
  \par
  
Wenn {\bf yes}, dann versucht CVS Dateizugriffsrechte und andere spezielle
Dateisysteminformationen (wie Device-Nummern und Ziele symbolischer
Links) möglichst zu erhalten. Dies möchten Sie wahrscheinlich nicht,
weil diese Option sich nicht unbedingt immer verhält wie erwartet.
(Siehe auch den Abschnitt {\bf Special Files} im Cederqvist mit weiteren
Details.)
    

    
  \par
  
{\bf TopLevelAdmin (normal: =no)}
    
    
  \par
  
Wenn {\bf yes}, dann erzeugen {\bf Checkouts} ein {\bf CVS/}-Unterverzeichnis neben
jedem Dateibaum der Arbeitskopie (im Mutterverzeichnis der
Arbeitskopie). Dies kann nützlich sein, wenn Sie viele Arbeitskopien
aus demselben Archiv auschecken; andererseits wird durch eine
Einstellung an dieser Stelle jeder Benutzer des Archivs betroffen.
    

    
  \par
  
{\bf LockDir} (normal: nicht gesetzt)
    
    
  \par
  
Das Argument nach dem Gleichheitszeichen ist der Pfad zu einem
Verzeichnis, in dem CVS Lock-Dateien erzeugen kann. Wenn dies nicht
gesetzt ist, werden Lock-Dateien innerhalb des Archivs jeweils bei den
korrespondierenden RCS-Dateie jedes Projektes angelegt. Das bedeutet,
dass Benutzern dieser Projekte auf Dateisystemebene Schreibzugriff auf
diese Archivverzeichnisse gewährt sein muss.
    


    
  \par
  
{\bf cvsignore}
    

    
  \par
  
Ignoriert bestimmte Dateien, wenn Aktualisierungen, {\bf Imports} oder
{\bf Releases} durchgeführt werden. Normalerweise ignoriert CVS sowieso
einige Arten von Dateien. (Für eine vollständige Liste siehe die {\bf -I}
Option zu import weiter vorne in diesem Kapitel.) Sie können diese
Liste erweitern, indem Sie zusätzliche Dateinamen oder Wildcards in
der {\bf cvsignore}-Datei eintragen. Jede Zeile gibt einen Dateinamen oder
ein Muster, z.B.:
    

    
  \par
  
{\bf README.msdos}
    
    
  \par
  
{\bf *.html}
    
    
  \par
  
{\bf blah?.out}
    

    
  \par
  
Hierdurch wird CVS veranlasst, alle Dateien mit dem Namen
{\bf README.msdos}, alle Dateien, die auf {\bf .html} enden, und alle Dateien,
die mit {\bf blah} anfangen und mit {\bf .out} enden, zu ignorieren.
(Theoretisch könnten Sie mehrere Dateien oder Wildcards in jeder Zeile
durch Leerzeichen getrennt angeben, aber die Lesbarkeit ist bei einem
Ausdruck pro Zeile besser. Bedauerlicherweise impliziert diese
Tatsache auch, dass es keinen Weg gibt, Dateinamen, die Leerzeichen
enthalten, zu spezifizieren, außer unter Verwendung von Wildcards.)
    

    
  \par
  
Ein {\bf !} an beliebiger Stelle innerhalb der Liste macht alle
vorangehenden Einträge unwirksam. (Siehe {\bf \$CVSIGNORE}  im bschnitt
{\bf Umgebungsvariablen} in diesem Kapitel für eine vollständigere
Diskussion des Verhaltens von Ignore.)
    


    
  \par
  
{\bf cvswrappers}
    

    
  \par
  
Definiert gewisse Filtermethoden, basierend auf dem Dateinamen. Jede
Zeile enthält einen Dateinamen oder eine Wildcard, gefolgt von einer
Option, die den Filtertyp festlegt, und ein Argument zu dieser Option.
    

    
  \par
  
Optionen:
    

    \begin{list}{*}{}
     
	\item 
{\bf -m} 
     
     \begin{list}{*}{}
      
	\item 
Spezifiziert eine Aktualisierungsmethode. Mögliche Argumente sind
MERGE, was eine automatische Integration in die Arbeitskopie bewirkt,
sowie COPY, was bewirkt, dass keine Integration versucht wird, sondern
der Benutzer mit beiden Versionen einer Datei konfrontiert wird und
das selber regeln muss. Standardeinstellung ist MERGE, außer bei
Binärdateien (solche, deren Schlüsselwortersetzungs-Methode auf {\bf -kb}
gesetzt ist). (Siehe auch den Abschnitt {\bf Schüsselwortersetzung} weiter
vorne in diesem Kapitel.) Dateien, die als binär markiert sind, nutzen
automatisch die {\bf COPY} Methode, sodass kein Grund besteht, für diese
extra einen {\bf -m COPY-Wrapper} zu definieren.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -k} 
     
     \begin{list}{*}{}
      
	\item 
Legt eine Schlüsselwortersetzungs-Methode fest. Alle üblichen Methoden
sind erlaubt. (Siehe auch den Abschnitt {\bf Schüsselwortersetzung} weiter
vorne in diesem Kapitel mit einer vollständigen Liste.)
      
     \end{list}
    \end{list}

    
  \par
  
Hier ist ein Beispiel für eine {\bf cvswrappers}-Datei:
    

    
  \par
  
{\bf *.blob -m COPY} 
    
    
  \par
  
{\bf *.blink -k o} 
    

    
  \par
  
Diese {\bf cvswrappers}-Datei legt fest, dass für Dateien, die auf {\bf .blob} 
enden, keine automatische Integration versucht werden soll und für
Dateien, die auf {\bf .blink} enden, die Schlüsselwortersetzung
unterdrückt wird. (Siehe auch {\bf .cvswrappers} im Abschnitt {\bf Dateien in
der Arbeitskopie} in diesem Kapitel.)
    


    
  \par
  
{\bf editinfo}
    

    
  \par
  
Diese Datei ist überholt. Sehr überholt.
    


    
  \par
  
{\bf history}
    

    
  \par
  
Speichert eine ständig anwachsende Historie von Aktivitäten im Archiv,
zur Benutzung durch das {\bf cvs history}-Kommando. Um diese Funktion zu
deaktivieren, löschen Sie einfach die {\bf history}-Datei. Wenn sie
existiert, sollte sie am besten für alle beschreibbar sein, um spätere
Probleme mit Dateizugriffsrechten zu vermeiden.
    

    
  \par
  
Der Inhalt dieser Datei ändert in keiner Weise das Verhalten von CVS
(selbstverständlich mit Ausnahme der Ausgabe des Befehles {\bf cvs
history}).
    


    
  \par
  
{\bf loginfo}
    

    
  \par
  
Spezifiziert Programme, welche die Log-Mitteilungen bei jedem {\bf Commit}
bearbeiten, abhängig davon, was von dem {\bf Commit} betroffen ist. Jede
Zeile setzt sich aus einem regulären Ausdruck, gefolgt von einem
Befehlsausdruck, zusammen:
    

    
  \par
  
{\bf REGULÄRER\_AUSDRUCK PROGRAMM [ARGUMENTE]}
    

    
  \par
  
Dem PROGRAMM wird die Log-Mitteilung auf die Standardeingabe übermittelt.
    

    
  \par
  
Einige spezielle Codes können in ARGUMENTE verwendet werden: {\bf %s}
symbolisiert die Namen der Dateien, die der {\bf Commit} betrifft, {\bf %V} steht
für die alten Revisionen vor dem {\bf Commit} und {\bf %v} für die neuen
Revisionen nach dem {\bf Commit}. Wenn mehrere Dateien betroffen sind, ist
jedes Element der Ersetzung durch Leerzeichen vom nächsten getrennt.
Beispielsweise wird bei einem {\bf Commit}, der zwei Dateien betrifft, {\bf %s} zu
{\bf hallo.c} {\bf README.txt}  und {\bf %v} zu 1.17 1.12.
    

    
  \par
  
Sie können die Codes in geschweiften Klammern kombinieren, wodurch
jeder zu einem Namen gehörige Block intern durch Kommata, die Blöcke
an sich durch Leerzeichen getrennt werden. Um das vorige Beispiel
weiterzuführen, sähe beispielsweise die Expansion von {\bf %{sv}} so aus:
{\bf hallo.c,1.17 README.txt,1.12}.
    

    
  \par
  
Wenn überhaupt irgendeine % Expansion durchgeführt wird, dann wird der
Pfad im Archiv vorangestellt. Das heißt, das letzte Beispiel ergäbe in
Wirklichkeit:
    

    
  \par
  
{\bf myproj hallo.c,1.17 README.txt,1.12} 
    

    
  \par
  
Wenn PROGRAMM mit einem Rückgabewert ungleich null beendet wird, so
schlägt {\bf commit} fehl; anderenfalls wird die Aktion fortgeführt. (Siehe
auch den Abschnitt {\bf gemeinsame Syntax} weiter vorn in diesem Kapitel.)
    


    
  \par
  
{\bf modules}
    

    
  \par
  
Diese Datei bildet Namen auf Archivverzeichnisse ab. Der generelle
Aufbau der Dateizeilen ist:
    

    
  \par
  
MODUL [OPTIONEN] [\&ANDERES\_MODUL...] [VERZEICHNIS] [DATEIEN] 
    

    
  \par
  
VERZEICHNIS muss kein Top-Level-Projektverzeichnis sein - es kann
genauso gut ein Unterverzeichnis sein. Werden irgendwelche DATEIEN
angegeben, so besteht das Modul nur aus diesen DATEIEN in diesem
VERZEICHNIS.
    

    
  \par
  
Ein Und-Zeichen, gefolgt von einem Modulnamen, bewirkt, dass die
Expansion jenes Moduls auf dieser Zeile übernommen wird.
    

    
  \par
  
Optionen:
    

    \begin{list}{*}{}
     
	\item 
{\bf -a} 
     
     \begin{list}{*}{}
      
	\item 
Dies ist ein Modul-{\bf Alias}, was heißt, es expandiert buchstäblich zu
allem, was nach den OPTIONEN folgt. In diesem Falle ist das
VERZEICHNIS/DATEIEN-Verhalten deaktiviert, und alles nach den OPTIONEN
wird als andere Module oder Archivverzeichnisse angesehen. Wenn Sie
die {\bf -a}-Option verwenden, können Sie bestimmte Verzeichnisse von
anderen Modulen ausnehmen, indem Sie ihnen ein Ausrufezeichen (!)
voranstellen. Zum Beispiel bedeutet
      
     \end{list}
    \end{list}

    
     \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
top\_proj -a !meinproj/a-verzeichnis !meinproj/b-verzeichnis meinproj
      \end{scriptsize} \end{tt} \linebreak 
    

    \begin{list}{*}{}
     \begin{list}{*}{}
      
	\item 
dass ein {\bf Checkout} von {\bf top\_proj} alle Dateien in meinproj betrifft,
außer denen in den Verzeichnissen a-verzeichnis und b-verzeichnis.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -d NAME} 
     
     \begin{list}{*}{}
      
	\item 
Nennt das Arbeitsverzeichnis NAME, anstatt den Modulnamen zu verwenden.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -e PROGRAMM} 
     
     \begin{list}{*}{}
      
	\item 
Startet PROGRAMM, wenn Dateien in diesem Modul exportiert werden.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -i PROGRAMM} 
     
     \begin{list}{*}{}
      
	\item 
Startet PROGRAMM, wenn {\bf Commits} von Dateien in diesem Modul
stattfinden. Dem Programm wird ein Argument übergeben - der
vollständige Pfad zu der fraglichen Datei innerhalb des Archivs.
(Siehe auch {\bf commitinfo}, {\bf loginfo} und {\bf verifymsg} für
ausgeklügeltere Methoden zum Starten von Programmen bei einem {\bf Commit}.)
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -o PROGRAMM} 
     
     \begin{list}{*}{}
      
	\item 
Startet PROGRAMM, wenn Dateien in diesem Modul ausgecheckt werden.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -s STATUS} 
     
     \begin{list}{*}{}
      
	\item 
Legt einen Status für dieses Modul fest. Wenn die modules-Datei
ausgegeben wird (mit {\bf cvs checkout -s}), dann werden die Module zunächst
nach Status, dann nach Namen sortiert. Diese Option hat keine weitere
Wirkung auf CVS, also nutzen Sie sie nach Belieben. Sie können Sie
benutzen, um nach beliebigen Kriterien zu sortieren: beispielsweise
Status, Verantwortliche für den Quelltext oder Sprache der Datei.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -t PROGRAMM} 
     
     \begin{list}{*}{}
      
	\item 
Startet PROGRAMM, wenn Dateien in diesem Modul mittels {\bf cvs rtag}
markiert werden. Dem Programm werden zwei Argumente mitgegeben: der
Name des Moduls und der symbolische Name der Markierung. Das Programm
wird nur für rtag aufgerufen, nicht für {\bf tag}. Ich habe keine Ahnung,
warum diese Unterscheidung gemacht wird. Die {\bf taginfo} -Datei könnte
nützlicher für Sie sein, wenn Sie Programme durch tag starten möchten.
      
     \end{list}
    \end{list}

    \begin{list}{*}{}
     
	\item 
{\bf -u PROGRAMM} 
     
     \begin{list}{*}{}
      
	\item 
Startet PROGRAMM, immer wenn eine Arbeitskopie dieses Moduls aus
seinem Hauptverzeichnis heraus aktualisiert wird. Dem Programm wird
ein einzelnes Argument übergeben: Der vollständige Dateiname zum
Archiv des Moduls.
      
     \end{list}
    \end{list}

    
  \par
  
{\bf notify}
    

    
  \par
  
Kontrolliert, wie die Benachrichtigungen für beobachtete Dateien
durchgeführt werden. (Möglicherweise möchten Sie hierzu auch bei den
{\bf watch}- und {\bf edit}-Kommandos nachlesen oder den Abschnitt {\bf Watches} in
Kapitel 6 anschauen.) Jede Zeile hat die übliche Form:
    

    
  \par
  
{\bf REGULÄRER\_AUSDRUCK PROGRAMM [ARGUMENTE]}
    

    
  \par
  
Ein {\bf %s} innerhalb der ARGUMENTE wird zu dem Namen des Benutzers
expandiert, der benachrichtigt werden soll, während der Rest der
Information bezüglich der Benachrichtigung dem PROGRAMM auf der
Standardeingabe übergeben wird. Üblicherweise ist diese Information
eine kurze Nachricht, die dazu geeignet ist, eine E-Mail an den
Benutzer zu erzeugen. (Siehe auch den Abschnitt {\bf gemeinsame Syntax}
weiter vorne in diesem Kapitel.)
    

    
  \par
  
In der Standardkonfiguration von CVS hat die {\bf notify}-Datei eine Zeile:
    

    
  \par
  
{\bf ALL mail %s -s ''CVS notification''} 
    

    
  \par
  
die meistens auch vollständig ausreicht.
    


    
  \par
  
{\bf passwd}
    

    
  \par
  
Enthält Authentisierungsdaten zur Nutzung mit der
pserver-Zugriffsmethode. Jede Zeile hat die Form:
    

    
  \par
  
{\bf BENUTZER:VERSCHLÜSSELTES\_PASSWORT[:SYSTEM\_BENUTZER]} 
    

    
  \par
  
Ist kein SYSTEM\_BENUTZER gegeben, wird BENUTZER als der
Systembenutzername angenommen.
    


    
  \par
  
{\bf rcsinfo}
    

    
  \par
  
Definiert ein Formular, das für Log-Mitteilungen ausgefüllt werden
sollte, die mit einem interaktiven Editor erstellt werden. Jede Zeile
von rcsinfo sieht wie folgt aus:
    

    
  \par
  
{\bf REGULÄRER\_AUSDRUCK DATEI\_MIT\_FORMULARVORLAGE} 
    

    
  \par
  
Die Vorlage wird an extern gelagerte Arbeitskopien übergeben, wenn
diese einen {\bf Checkout} durchführen, sodass eventuelle Änderungen an der
Vorlage zunächst ohne Wirkung bleiben, da die externen Kopien die alte
Version weiterverwenden. (Siehe auch den Abschnitt {\bf gemeinsame Syntax}
in diesem Kapitel.)
    


    
  \par
  
{\bf taginfo}
    

    
  \par
  
Startet ein Programm beim Setzen von Markierungen. (Üblicherweise um
zu überprüfen, dass die Markierungen einem bestimmten Schema folgen).
Jede Zeile hat die Form:
    

    
  \par
  
{\bf REGULÄRER\_AUSDRUCK PROGRAMM} 
    

    
  \par
  
Dem Programm wird ein Satz von Argumenten übergeben. In dieser
Reihenfolge sind das der symbolische Name der Markierung, die
Operation (siehe unten), das Archiv und so viele Paare aus
Dateiname/Revision, wie Dateien von der Aktion betroffen sind. Die
Datei/Revision-Paare sind durch Leerzeichen getrennt, wie der Rest der
Argumente.
    

    
  \par
  
Die Operation ist entweder add, mov oder del. (mov bedeutet, dass die
{\bf -F}-Option des {\bf tag}-Befehls verwendet wurde.)
    

    
  \par
  
Wenn PROGRAMM mit einem Rückgabewert ungleich null beendet wird, so schlägt der
 {\bf tag}-Befehl fehl;
andernfalls wird er fortgeführt. (Siehe auch den Abschnitt {\bf gemeinsame Syntax}
 weiter vorn in diesem Kapitel.)
    


    
  \par
  
{\bf users}
    

    
  \par
  
Verknüpft Benutzernamen mit E-Mail-Adressen. Jede Zeile sieht aus wie:
    

    
  \par
  
{\bf BENUTZERNAME:EMAIL\_ADRESSE} 
    

    
  \par
  
Hiermit können Benachrichtigungen über beobachtete Dateien an EMAIL\_
ADRESSE anstatt an den BENUTZERNAMEN auf der Maschine mit dem Archiv
versendet werden. (Alles, was hier gemacht wird, ist die Kontrolle der
Expansion von {\bf %s} in der {\bf notify}-Datei.) Sollte die EMAIL\_ADRESSE
Leerzeichen enthalten, dann stellen Sie sicher, dass sie in
Anführungszeichen steht.
    

    
  \par
  
Wenn Benutzer-Aliasing in der passwd-Datei verwendet wird, dann ist
der Benutzername, der hier verglichen wird, der CVS-Benutzername (der
auf der linken Seite), nicht der Systembenutzername (rechts, falls
vorhanden).
    


    
  \par
  
{\bf val-tags}
    

    
  \par
  
Diese Datei dient als Zwischenspeicher für gültige Markierungen, um
deren Auffindung zu beschleunigen. Es sollte nie notwendig sein, dass
Sie diese Datei bearbeiten müssen, aber es könnte notwendig sein, die
Zugriffs- oder Eigentumsrechte zu ändern, wenn Leute Probleme beim
Zugriff auf oder bei der Erzeugung von Markierungen haben.
    


    
  \par
  
{\bf verifymsg}
    

    
  \par
  
Wird in Verbindung mit {\bf rcsinfo} verwendet, um das Format von
Log-Mitteilungen zu verifizieren. Jede Zeile hat die Form:
    

    
  \par
  
{\bf REGULÄRER\_AUSDRUCK PROGRAMM [ARGUMENTE]} 
    

    
  \par
  
Der vollständige Pfad zur aktuellen Vorlage für Log-Mitteilungen
(siehe auch {\bf rcsinfo} weiter vorne in diesem Kapitel) wird hinter dem
letzten, in der verifymsg-Datei angegebenen Argument angefügt. Wenn
PROGRAMM mit einem Rückgabewert ungleich null beendet wird, so schlägt
{\bf commit} fehl; andernfalls wird die Aktion fortgeführt. (Siehe auch den
Abschnitt {\bf gemeinsame Syntax} weiter vorn in diesem Kapitel.)
    
   
  \section{Laufzeit-Kontrolldateien} \label{d78e7807}
        
    

   
  \par
  
Es gibt nur einige wenige Dateien auf der Client-Seite (Arbeitskopie),
die das Verhalten von CVS beeinflussen können. In einigen Fällen
entsprechen sie den Archivverwaltungsdateien; in anderen Fällen
kontrollieren sie Verhaltensweisen, die nur für die Client-Seite von Bedeutung
sind.
   

   \subsection{.cvsrc} \label{d78e7815}
        
    

    
  \par
  
Enthält Optionen, die Sie automatisch bei jedem Aufruf von
CVS-Kommandos verwenden möchten. Das Format jeder Zeile ist
    

    
  \par
  
{\bf KOMMANDO OPTIONEN} 
    

    
  \par
  
wobei jedes KOMMANDO ein nicht abgekürzter CVS-Befehl ist, wie z.B.
{\bf checkout} oder {\bf update} (und nicht {\bf co} oder {\bf up}). Die OPTIONEN sind jene,
die Sie grundsätzlich anwenden möchten, wenn der Befehl verwendet
wird. Hier eine übliche {\bf .cvsrc}-Zeile:
    

   

   \subsection{update -d -p} \label{d78e7848}
        
    

    
  \par
  
um globale Optionen für jedes Kommando zu setzen, nehmen Sie einfach
cvs als KOMMANDO.
    

   

   \subsection{.cvsignore} \label{d78e7857}
        
    

    
  \par
  
Definiert zusätzliche Muster zum Ignorieren von Dateien. (Siehe
{\bf cvsignore} im Abschnitt {\bf Archivverwaltungsdateien} in diesem Kapitel
zur Syntax.)
    

    
  \par
  
Sie können eine {\bf .cvsignore}-Datei in Ihrem {\bf Home}-Verzeichnis haben, die
stets verwendet werden wird, wenn Sie CVS benutzen. Sie können zudem
verzeichnisspezifische Dateien in jedem Projektverzeichnis einer
Arbeitskopie haben. Letztere wirken dann nur auf das Verzeichnis, in
dem sie abgelegt sind, und nicht in dessen Unterverzeichnissen. (Siehe
auch {\bf \$CVSIGNORE} im Abschnitt {\bf Umgebungsvariablen} in diesem Kapitel.)
    

   

   \subsection{.cvspass} \label{d78e7887}
        
    

    
  \par
  
Speichert Passwörter für jedes Archiv, auf das Sie mit der
pserver-Methode zugreifen. Jede Zeile hat die Form:
    

    
  \par
  
{\bf ARCHIV LEICHT\_VERSCHLÜSSELTES\_PASSWORT} 
    

    
  \par
  
Im Grunde werden die Passwörter im Klartext gespeichert - lediglich
eine leichte Verdrehung der Daten soll bewirken, dass nicht per Zufall
(z.B. wenn root versehentlich den Dateiinhalt anzeigt) die Daten
direkt sichtbar sind. Diese Maßnahme wird jedoch keine Person, die es
ernsthaft darauf anlegt, davon abhalten, das Passwort zu
entschlüsseln, falls sie Zugriff auf die Datei erhält.
    

    
  \par
  
Die Datei {\bf .cvspass} ist nicht an einen Rechner gebunden. Sie können es
von einer Maschine auf eine andere kopieren und haben dann auch dort
all Ihre CVS-Passwörter verfügbar, ohne dort jemals {\bf cvs login} aufrufen
zu müssen. (Siehe auch die Kommandos {\bf login} und {\bf logout}.)
    

   

   \subsection{.cvswrappers} \label{d78e7920}
        
    

    
  \par
  
Hierbei handelt es sich um eine client-seitige Version der
{\bf cvswrappers}-Datei. (Siehe den Abschnitt {\bf Archivverwaltungsdateien} in
diesem Kapitel.) Eine {\bf .cvswrappers}-Datei darf sich in Ihrem
{\bf Home}-Verzeichnis sowie in jedem Verzeichnis der Arbeitskopie befinden,
genau wie bei {\bf .cvsignore}.
    
   
  \section{Dateien in der Arbeitskopie} \label{d78e7950}
        
   

   
  \par
  
Die {\bf CVS/}-Verwaltungsunterverzeichnisse in jeder Arbeitskopie enthalten
einige der folgenden Dateien:
   


   \subsection{CVS/Base/ (Verzeichnis)} \label{d78e7961}
        
    

    
  \par
  
Sollten {\bf Watches} (siehe Kapitel 6) aktiviert sein, speichert {\bf cvs edit}
die Originalversion der Datei in diesem Verzeichnis. So kann cvs
{\bf unedit} auch dann funktionieren, wenn der Server gerade nicht
erreichbar ist.
    

   

   \subsection{CVS/Baserev} \label{d78e7979}
        
    

    
  \par
  
Liste der Revisionen jeder Datei in {\bf Base/}. Jede Zeile sieht so aus:
    

    
  \par
  
{\bf DATEI/REVISION/ERWEITERUNG} 
    

    
  \par
  
ERWEITERUNG ist ein momentan nicht beachtetes Feld für, nun ja,
zukünftige Erweiterungen eben.
    

   

   \subsection{CVS/Baserev.tmp} \label{d78e8000}
        
    

    
  \par
  
Die temporäre Datei zur vorhergehenden. (Siehe {\bf CVS/Notify.tmp}  oder
{\bf CVS/Entries.Backup}  später in diesem Abschnitt zur Erklärung.)
    

   

   \subsection{CVS/Checkin.prog} \label{d78e8015}
        
    

    
  \par
  
Nimmt den Namen des Programmes auf, das zu der {\bf -i}-Option in der Datei
modules angegeben ist. (Siehe auch den Abschnitt
{\bf Archivverwaltungsdateien} in diesem Kapitel.)
    

   

   \subsection{CVS/Entries} \label{d78e8030}
        
    

    
  \par
  
Speichert die Revisionen für die Dateien in diesem Verzeichnis. Jede
Zeile hat die Form:
    

    
  \par
  
{\bf [KÜRZEL]/DATEI/REVISION/DATUM/[SCHLÜSSELWORT\_METHODE]/[GEBUNDENE\_OPTION]} 
    

    
  \par
  
Falls KÜRZEL vorhanden ist, muss er {\bf D} für Directory (Verzeichnis) sein
(alles andere wird von CVS ignoriert, um spätere Erweiterungen der
Funktionalität zu erlauben), und der Rest der Bestandteile auf der
Zeile fehlt. Diese Datei ist immer vorhanden.
    

   

   \subsection{CVS/Entries.Backup} \label{d78e8051}
        
    

    
  \par
  
Das ist nur eine temporäre Datei. Wenn Sie irgendein Programm
schreiben, das die Datei {\bf Entries} modifizieren soll, dann lassen Sie es
das Ergebnis zunächst in die Datei {\bf Entries.Backup} schreiben, und sie
danach automatisch in {\bf Entries} umbenennen.
    

   

   \subsection{CVS/Entries.Log} \label{d78e8069}
        
    

    
  \par
  
Hierbei handelt es sich im Grunde um einen Patch, der {\bf Entries} 
hinzugefügt wird, nachdem {\bf Entries} gelesen wurde (ein Hack aus
Effizienzgründen, um nicht wegen jeder Kleinigkeit die ganze
{\bf Entries}-Datei neu schreiben zu müssen). Das Format ist im Grunde
dasselbe wie bei Entries, nur dass hier jede Zeile mit einem Kürzel
beginnen muss: Ein {\bf A} ({\bf add}) bedeutet, dass diese Zeile dem Inhalt von
Entries hinzugefügt werden muss; {\bf R} ({\bf remove}), dass sie dem Inhalt von
Entries abgezogen werden soll. Andere Buchstaben werden ignoriert, um
zukünftige Erweiterungen zu erlauben.
    

   

   \subsection{CVS/Entries.Static} \label{d78e8099}
        
    

    
  \par
  
Wenn diese Datei existiert, so wurde nur ein Teil des Verzeichnisses
aus dem Archiv übertragen, und CVS wird keine weiteren Dateien in
diesem Verzeichnis erzeugen. Dieser Zustand kann normalerweise durch
ein {\bf update-d} behoben werden.
    

   

   \subsection{CVS/Notify} \label{d78e8111}
        
    

    
  \par
  
Speichert Benachrichtigungen, die noch nicht an den Server geschickt wurden.
    

   

   \subsection{CVS/Notify.tmp} \label{d78e8120}
        
    

    
  \par
  
Die temporäre Datei zu {\bf Notify}. Die übliche Vorgehensweise zur
Modifikation von {\bf Notify} ist {\bf Notify.tmp} zu schreiben und dann in
{\bf Notify} umzubenennen.
    

   

   \subsection{CVS/Repository} \label{d78e8141}
        
    

    
  \par
  
Der Pfad zu dem projektspezifischen Unterverzeichnis im Archiv. Das
kann eine absolute Angabe sein oder eine relativ zu dem Pfad, der in
Root angegeben ist.
    

    
  \par
  
Diese Datei ist immer vorhanden.
    

   

   \subsection{CVS/Root} \label{d78e8153}
        
    

    
  \par
  
Dies ist das Archiv; d.h. der Wert der {\bf CVSROOT}-Umgebungsvariablen oder
des Arguments zu der globalen Option {\bf -d}.
    

    
  \par
  
Diese Datei ist immer vorhanden.
    

   

   \subsection{CVS/Tag} \label{d78e8171}
        
    

    
  \par
  
Ist eine Markierung oder ein Datum an dieses Verzeichnis gebunden, so
wird das in der ersten Zeile dieser Datei vermerkt. Das erste Zeichen
ist ein einzelner Buchstabe, der den Typ der Bindung bestimmt: {\bf T},
{\bf N}, oder {\bf D} bezeichnen, ob es sich um die Bezeichnung eines Zweiges,
einen symbolischen Namen (Marke) oder ein Datum handelt. Der Rest der
Zeile ist die Markierung respektive das Datum selbst.
    

   

   \subsection{CVS/Template} \label{d78e8189}
        
    

    
  \par
  
Enthält eine Vorlage für Log-Mitteilungen entsprechend der Vorgabe
durch die {\bf rcsinfo}-Datei. (Siehe den Abschnitt
{\bf Archivverwaltungsdateien} weiter vorn in diesem Kapitel.) Diese Datei
ist nur für externe Arbeitskopien von Bedeutung; lokale Arbeitskopien
auf demselben Rechner wie das Archiv lesen {\bf rcsinfo} direkt aus dem
Archiv.
    

   

   \subsection{CVS/Update.prog} \label{d78e8207}
        
    

    
  \par
  
Enthält den Namen des Programmes, das mittels der {\bf -u}-Option in der
Datei modules angegeben wurde. (Siehe den Abschnitt
{\bf Archivverwaltungsdateien} in diesem Kapitel.)
    
   
  \section{Umgebungsvariablen} \label{d78e8228}
        
    


   
  \par
  
Es folgt eine Liste aller Umgebungsvariablen, die CVS kennt.
   

   \subsection{\$COMSPEC} \label{d78e8236}
        
    

    
  \par
  
Wird nur in OS/2 verwendet; sie enthält den Namen des
Kommando-Interpreters. Standardwert ist: {\bf CMD.EXE}.
    

   

   \subsection{\$CVS\_CLIENT\_LOG} \label{d78e8248}
        
    

    
  \par
  
Wird zur Fehlerbeseitigung im Client/Server-Protokoll verwendet. Wenn
Sie in diese Variable einen Dateinamen schreiben, bevor Sie CVS
starten, so wird der gesamte eingehende Datenverkehr in Dateiname{\bf .in},
der ausgehende in Dateiname{\bf .out} abgespeichert.
    

   

   \subsection{\$CVS\_CLIENT\_PORT} \label{d78e8263}
        
    

    
  \par
  
Wird für Kerberos-authentisierten Client/Server-Zugriff benötigt.
    

   

   \subsection{\$CVSEDITOR} \label{d78e8272}
        
    

    
  \par
  
Enthält den Namen des Editors, der zum Erstellen von Log-Mitteilungen
genutzt werden soll. Diese Variable hebt eventuelle Definitionen in
{\bf \$EDITOR} oder {\bf \$VISUAL} auf.
    

   

   \subsection{\$CVSIGNORE} \label{d78e8287}
        
    

    
  \par
  
Eine durch Leerzeichen getrennte Liste von Namen und Wildcards, die
von CVS ignoriert werden sollen. (Siehe auch die {\bf -I}-Option des
{\bf import}-Kommandos.) Der Inhalt dieser Variablen wird jeder Ignore-Liste
eines Kommandos als Letztes angehängt. Letztere Liste wird in der
folgenden Reihenfolge aufgebaut: {\bf CVSROOT/cvsignore}, die Datei
{\bf .cvsignore} in Ihrem {\bf Home}-Verzeichnis, die
{\bf \$CVSIGNORE}-Umgebungsvariable, möglicherweise per {\bf -I} angegebene
Optionen und zuletzt der Inhalt der {\bf .cvsignore}-Dateien in den jeweils
bearbeiteten Unterverzeichnissen der Arbeitskopie. Ein {\bf !} als
Ignore-Muster an einem beliebigen Punkt dieser Liste löscht die
gesamte Liste bis zu diesem Punkt.
    

   

   \subsection{SCVS\_IGNORE\_REMOTE\_ROOT} \label{d78e8323}
        
    

    
  \par
  
Seit kurzem überholt.
    

   

   \subsection{SCVS\_PASSFILE} \label{d78e8332}
        
    

    
  \par
  
Weist CVS an, eine andere Datei als {\bf .cvspass} im {\bf Home}-Verzeichnis für
Authentisierungsdaten zu benutzen. (Siehe {\bf .cvspass} im Abschnitt
{\bf Laufzeit-Kontrolldateien} in diesem Kapitel.)
    

   

   \subsection{\$CVS\_RCMD\_PORT} \label{d78e8353}
        
    

    
  \par
  
Spezifiziert die Port-Nummer, auf welcher der rcmd-Daemon auf dem
Server kontaktiert werden kann. (Diese Variable wird momentan von Unix
CVS-Clients ignoriert.)
    

   

   \subsection{\$CVSREAD} \label{d78e8362}
        
    

    
  \par
  
Setzt Dateien in der Arbeitskopie beim {\bf Checkout} und {\bf Update} nach
Möglichkeit auf {\bf nur lesbar}. Die Standardeinstellung ist {\bf lesen und
schreiben}. (Siehe auch die globale Option {\bf -r}.)
    

   

   \subsection{\$CVSROOT} \label{d78e8386}
        
    

    
  \par
  
Diese Variable enthält den Pfad zum Archiv und kann durch die globale
Option {\bf -d} oder durch das innerhalb einer Arbeitskopie gespeicherte
Archiv aufgehoben werden. Dem Pfad kann gemäß folgender Syntax eine
Zugriffsmethode, ein Benutzer- und ein Rechnername vorangestellt
werden:
    

    
  \par
  
{\bf [[:METHODE:][[BENUTZER@]RECHNER]:]/ARCHIV\_PFAD} 
    

    
  \par
  
Siehe auch die Beschreibung der globalen Option {\bf -d} am Anfang dieses
Kapitels für eine Liste möglicher Methoden.
    

   

   \subsection{\$CVS\_RSH} \label{d78e8410}
        
    

    
  \par
  
Enthält den Namen des externen Programmes, das zur Verbindung mit dem
Server für die Zugriffsmethode {\bf :ext:} verwendet wird. Normaler Wert ist
{\bf rsh}, aber {\bf ssh} ist eine übliche Alternative dazu.
    

   

   \subsection{\$CVS\_SERVER} \label{d78e8428}
        
    

    
  \par
  
Enthält den Namen des Programms zum Aufruf von CVS auf der
Serverseite. Ist natürlich standardmäßig auf cvs gesetzt.
    

   

   \subsection{\$CVS\_SERVER\_SLEEP} \label{d78e8437}
        
    

    
  \par
  
Verzögert den Start des Serverprozesses beim Aufruf um die in dieser
Variablen angegebene Zahl an Sekunden. Wird nur bei der Fehlersuche
benötigt, damit der Debugger Zeit hat, die Kontrolle zu übernehmen.
    

   

   \subsection{\$CVSUMASK} \label{d78e8446}
        
    

    
  \par
  
Enthält die Standardeinstellung für Schreib-/Lesezugriffe auf Dateien
im Archiv. (Am besten gar nicht benutzen - es funktioniert sowieso
nicht mit Client/Server-CVS.)
    

   

   \subsection{\$CVSWRAPPERS} \label{d78e8455}
        
    

    
  \par
  
Eine durch Leerzeichen separierte Liste von Dateinamen, Wildcards und
Argumenten, die CVS für so genannte Wrapper verwenden soll. (Siehe
{\bf cvswrappers} im Abschnitt {\bf Archivverwaltungsdateien} in diesem
Kapitel für mehr Informationen).
    

   

   \subsection{\$EDITOR} \label{d78e8470}
        
    

    
  \par
  
(siehe {\bf \$CVSEDITOR})
    

   

   \subsection{\$HOME \$HOMEDRIVE \$HOMEPATH} \label{d78e8482}
        
    

    
  \par
  
Der Ort, wo Dateien wie {\bf .cvsrc}, {\bf .cvspass} gefunden werden können (unter
Unix wird nur {\bf HOME} beachtet). In Windows NT sollten {\bf HOMEDRIVE} und
{\bf HOMEPATH} gesetzt sein, unter Windows 95 kann es sein, dass sie noch
von Hand eingestellt werden müssen.
    

    
  \par
  
Bemerkung:
    

    
In Windows 95 müssen Sie evtl. auch HOME setzen. Stellen Sie dabei
sicher, dass der Pfad nicht in einem Schrägstrich endet; benutzen Sie
set HOME=C: oder einen ähnlichen Ausdruck.
    

   

   \subsection{\$PATH} \label{d78e8515}
        
    

    
  \par
  
Überholt.
    

   

   \subsection{\$TEMP \$TMP \$TMPDIR} \label{d78e8524}
        
    

    
  \par
  
Der Ort, an dem temporäre Dateien gespeichert werden sollen. (Der
Server benutzt TMPDIR; Windows NT benutzt TMP). Das Setzen dieser
Variablen auf der Client-Seite beeinflusst den Server nicht. Generell
beeinflusst das Setzen dieser Variablen nicht den Ort, an dem
temporäre Locks abgespeichert werden. (Siehe auch den Abschnitt
{\bf config} im Abschnitt {\bf Archivverwaltungsdateien} in diesem Kapitel für
mehr Informationen.)
    
   

   \subsection{\$VISUAL} \label{d78e8539}
        
    

    
  \par
  
siehe {\bf \&\$CVSEDITOR}
    


    
  \par
  
1. Anm. d. Übers.: Die korrekte Zeitzone für Deutschland ist CET bzw.
(im Sommer) CEST
    

    
  \par
  
2. Anm. d. Übers.: tot
    

    
  \par
  
3. Anm. d. Übers.: alt
    

   
  
	\ref{inhalt.tex}


	\end{document}
	
