Home
Über
Projekte
 CVS
 Contributors
 Online
 Download
 RCS
 Texinfo
 Texi2HTML
Geschichte
Werkzeuge
Unterstützung
 
[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.4 Tags -- Symbolische Revisionen

Revisionsnummern werden unabhängig von der Releasenummer des Softwareproduktes vergeben. Je nachdem, wie man CVS einsetzt, kann sich die Revisionsnummer zwischen zwei Releases mehrmals ändern. Z.B. haben einige Sourcefiles von RCS 5.6 folgende Revisionen:

 
ci.c            5.21
co.c            5.9
ident.c         5.3
rcs.c           5.12
rcsbase.h       5.11
rcsdiff.c       5.10
rcsedit.c       5.11
rcsfcmp.c       5.9
rcsgen.c        5.10
rcslex.c        5.11
rcsmap.c        5.2
rcsutil.c       5.10

Mit dem tag Kommando kann man einer bestimmten Revision eines Files einen symbolischen Namen geben. Die `-v' Option des status CVS Kommandos zeigt alle Tags eines Files und die zugehörigen Revisionen an. Tagnamen müssen mit einem Klein- oder Großbuchstaben beginnen und können Klein- und Großbuchstaben, Ziffern, sowie die Zeichen `-' und `_' ehthalten. Die beiden Tagnamen BASE und HEAD sind für CVS- interne Zwecke reserviert. Vermutlich werden in Zukunft neue CVS-interne Tagnamen einen speziellen Aufbau haben, z.B. könnten sie alle mit einem `.' beginnen, um Konflikte mit normalen Tagnamen zu vermeiden.

Oft werden Tagnamen nach bestimmten Mustern gebildet, bspw. aus dem Programmnamen und der Releasenummer. Man könnte die Releasenummer direkt an den Programmnamen anhängen und den `.' durch `-' ersetzen, so daß CVS 1.9 das Tag cvs1-9 erhalten würde. Eine einheitliche Namensgebung vermeidet das ständige Raten, ob nun cvs-1-9 oder cvs1_9 das richtige Tag ist. Man kann ein solche Namensgebung sogar vorschreiben, indem das File `taginfo' ( 8.3 Nutzer definiertes Logging) angepaßt wird.

Das folgende Beispiel zeigt, wie ein Tag zu einem File hinzugefügt wird. Die Kommandos müssen im Arbeitsverzeichnis, d.h. im Verzeichnis, in dem sich das File `backend.c' befindet, ausgeführt werden.

 
$ cvs tag rel-0-4 backend.c
T backend.c
$ cvs status -v backend.c
===================================================================
File: backend.c         Status: Up-to-date

    Version:            1.4     Tue Dec  1 14:39:01 1992
    RCS Version:        1.4     /u/cvsroot/yoyodyne/tc/backend.c,v
    Sticky Tag:         (none)
    Sticky Date:        (none)
    Sticky Options:     (none)

    Existing Tags:
        rel-0-4                     (revision: 1.4)

Eine vollständige Beschreibung der Syntax von cvs tag mit allen Optionen findet man in B. Quick reference to CVS commands.

Selten wird ein Tag nur an ein File vergeben. Viel häufiger ist der Fall, daß alle Files eines Moduls zu bestimmten Zeitpunkten des Entwicklungszyklus mit einem Tag versehen werden, z.B. wenn ein Release erstellt wird.

 
$ cvs tag rel-1-0 .
cvs tag: Tagging .
T Makefile
T backend.c
T driver.c
T frontend.c
T parser.c

(Wird CVS ein Verzeichnis als Argument übergeben, so führt es im allgemeinen die Aktion mit allen Files in diesem Verzeichnis aus und (rekursiv) mit allen Unterverzeichnissen dieses Verzeichnis. 6. Recursive behavior.)

Das checkout Kommando besitzt die Option `-r', mit der man eine Revision des Moduls gezielt wiederherstellen kann. Mit diesem Flag kann man später, nachdem das Modul `tc' geändert und weitere Releases definiert wurden, zum Release 1.0 zurückkehren:

 
$ cvs checkout -r rel-1-0 tc

Das ist bspw. sinnvoll, wenn in diesem Release ein Fehler vorhanden sein soll, der im aktuellen Release nicht auftritt.

Man kann ebenfalls den Zustand eines Moduls von einem bestimmten Zeitpunkt wiederherstellen. A.7.1 checkout options. Arbeitet man mit der Option `-r', so sollte man auf Sticky Tags achten; siehe auch 4.9 Sticky tags.

Vergibt man das gleiche Tag an mehr als ein File, so kann man es sich als "Kurve durch die Matrix von Filenamen und Revisionsnummern" vorstellen. Angenommen wir haben fünf Files mit folgenden Revisionen:

 
        file1   file2   file3   file4   file5

        1.1     1.1     1.1     1.1  /--1.1*      <-*-  TAG
        1.2*-   1.2     1.2    -1.2*-
        1.3  \- 1.3*-   1.3   / 1.3
        1.4          \  1.4  /  1.4
                      \-1.5*-   1.5
                        1.6

Vor einiger Zeit wurden die *-Versionen mit einem Tag versehen. Dieses Tag kann man sich als Schlaufe an der Linie durch die getaggten Filerevisionen vorstellen. Zieht man an dieser Schlaufe, so erhält man alle Revisionen mit diesem Tag. Oder man stellt sich das Tag als "Blick" durch eine Menge von Revisionen vor, die an der Stelle des Tags flach aufeinander liegen:

 
        file1   file2   file3   file4   file5

                        1.1
                        1.2
                1.1     1.3                       _
        1.1     1.2     1.4     1.1              /
        1.2*----1.3*----1.5*----1.2*----1.1     (--- <--- Look here
        1.3             1.6     1.3              \_
        1.4                     1.4
                                1.5

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

Sun Aug 26 19:51:33 UTC 2001 © 1999, 2000, 2001 by Manual Translation Project webmaster@manual-translation-project.org