Zurück: Stolperfallen Inhalt: CVS benutzen Weiter: Weiterführende Dokumentation

    

Nachtrag


Ein wesentlicher Punkt wurden in dem ursrprünglich geplanten Vortragsverlauf nicht berücksichtigt: die Erzeugung von Versionsnummerierungen, die der Sicht des Anwenders auf die einzelnen Versionen im Repository entsprechen. Dies soll hier nachgetragen werden.

Versionsnummern versus Tags

Die Versionsnummern, die in dem Abschnitt Weiterlaufen benutzt wurden, um die Unterschiede zwischen bestimmten, mit hilfe des Kommandos log ausgesuchten Versionen anzuzeigen, stellen die interne Sicht von CVS auf die im Repository vorhandenen Versionen dar. Aufgrund der Arbeitsweise von CVS sind diese Versionsnummern nicht dafür geeignet, eine gesamte Arbeitskopie auf einen bestimmten Stand zurückzuversetzen! Dies liegt an der Dateibasierten Arbeitsweise von CVS. CVS speichert die Versionen der einzelnen Dateien eines Projektes auch intern in einzelnen Dateien ab. Dies hat zur Folge, daß CVS die Versionsnummern für jede Datei eines Projektes einzeln zählt. Dateien, die besonders oft verändert und eingecheckt wurden haben daher zu einem bestimmten Zeitpunkt (z.B. bei einem Release) eine wesentlich höhere Versionsnummer als Dateien, die kaum verändert wurden, oder erst zu einem späteren Zeitpunkt erzeugt wurden. Wenn man also später seine Arbeitskopie auf den Stand dieses Releases zurückversetzen will, so kann man das nicht tun, in dem man mit -r die Versionsnummer angibt, die eine der Dateien zu dem Zeitpunkt des Releases hatte.

Um dieses Ziel zu erreichen, muß man dem Projekt zu diesem Zeitpunkt eine symbolische Versionsbezeichnung geben. Symbolisch, weil diese Versionsbezeichnung nicht unbedingt eine Zahlenfolge ist. Dies geschieht mit dem Kommando tag. Die Symbolische Versionsbezeichnung muß mit einem Buchstaben anfangen und darf außer Buchstaben und Zahlen nur einen Unter- oder Bindestrich enthalten.

kai@fREUNd:~/xpenguins$ cvs tag Version-1_2kai01
cvs tag: Tagging .
T AUTHORS
T COPYING
T ChangeLog
T INSTALL
T LIESMICH
T Makefile
T README
T toon.c
T toon.h
T vroot.h
T xpenguins
T xpenguins.1
T xpenguins.c
cvs tag: Tagging penguins
T penguins/bomber.xpm
T penguins/climber.xpm
T penguins/def.h
T penguins/explosion.xpm
T penguins/faller.xpm
T penguins/floater.xpm
T penguins/neu.xpm
T penguins/tumbler.xpm
T penguins/walker.xpm
kai@fREUNd:~/xpenguins$ 

Dieses Kommando ordnet den Dateiversionen, die sich zur Zeit in der Arbeitskopie befinden die symbolische Version Version-1_2kai01 zu. Später können also genau die Dateiversionen, die sich zum Zeitpunkt des tag-Aufrufes in der Arbeitskopie befanden mit cvs up -r Version-1_2kai01 wieder aus dem Repository in die Arbeitskopie geholt werden.

Zwei Bilder aus dem CVS-Buch (siehe Quellen) veranschaulichen den Nutzen von tag

     File A      File B      File C      File D      File E
     ------      ------      ------      ------      ------
     1.1         1.1         1.1         1.1         1.1
 ----1.2-.       1.2         1.2         1.2         1.2
     1.3 |       1.3         1.3         1.3         1.3
          \      1.4       .-1.4-.       1.4         1.4
           \     1.5      /  1.5  \      1.5         1.5
            \    1.6     /   1.6   |     1.6         1.6
             \   1.7    /          |     1.7         1.7
              \  1.8   /           |     1.8       .-1.8------->
               \ 1.9  /            |     1.9      /  1.9
                `1.10'             |     1.10    /   1.10
                 1.11              |     1.11    |
                                   |     1.12    |
                                   |     1.13    |
                                    \    1.14    |
                                     \   1.15   /
                                      \  1.16  /
                                       `-1.17-'

[Figure 2.1: How a tag might stand in relation to files's revisions.]

Die geschlängelte Linie repräsentiert dabei den Stand der Arbeitskopie zum Zeitpunkt des tag-Aufrufes (nicht alle Dateien befanden sich auf dem aktuellsten Stand).

     File A      File B      File C      File D      File E
     ------      ------      ------      ------      ------
                                         1.1
                                         1.2
                                         1.3
                                         1.4
                                         1.5
                                         1.6
                                         1.7
                 1.1                     1.8
                 1.2                     1.9
                 1.3                     1.10        1.1
                 1.4                     1.11        1.2
                 1.5                     1.12        1.3
                 1.6                     1.13        1.4
                 1.7         1.1         1.14        1.5
                 1.8         1.2         1.15        1.6
     1.1         1.9         1.3         1.16        1.7
 ----1.2---------1.10--------1.4---------1.17--------1.8------->
     1.3         1.11        1.5         1.17        1.9
                             1.6         1.17        1.10

[Figure 2.2: The same tag as a "straight sight" through the revision history.]

Bei der Benutzung des Kommandos tag sind zwei Besonderheiten zu beachten:

Die Tags können später eben so wie die Versionsnummern benutzt werden.

Zeitreisen per Datum

Eine weitere Möglichkeit, die gesamte Arbeitskopie in einen vergangenen Zustand zurückzuversetzen ist die Angabe eines Datums. Was bei der Angabe des Datums zu beachten ist, um wirklich die Versionen zu erhalten, die man haben möchte ist im CVS-Buch erklärt.

Branching

Dort ist auch erklärt, wie man ein Tag zu dem Abzweig für einen Branch machen kann.



Zurück: Stolperfallen Inhalt: CVS benutzen Weiter: Weiterführende Dokumentation