Mittwoch, 8. Januar 2014
CVS: Wissenswertes (POS1: 2BHIF)
Tags
Ein Tag (nicht das Gegenstück zur Nacht, sondern das englische Wort zu Marke) ist ein symbolischer Name für den Zustand des Projekts im Repository zu einem bestimmten Zeitpunkt. Ein Tag muss mit einem Buchstaben beginnen und kann dann Buchstaben, Ziffern, Unterstriche und Bindestriche enthalten. Punkte sind nicht erlaubt, damit ein Tag nicht mit einer Versionsnummer verwechselt werden kann.
Beispiele REL_1_0
, rev-99
, TRY_HP_20060919
Reguläre Tags
Jede Datei im Repository hat ihre eigene Versionsnummer (beginnend mit 1.1, wird bei jedem commit erhöht: 1.2, 1.3 usw.).
Besteht ein Modul (Projekt) aus den Dateien
Main.java 1.4
Gui.java 1.9
Net.java 1.6
will man auf diesen Zustand (diese Versionen) später wieder zugreifen können, weil dies z.B. eine auszuliefernde Version ist, so wählt man ein Tag, z.B. REL_1_0
.
Ein Tag erzeugt intern eine Liste von Versionsnummern, die den Stand jeder Datei wiedergeben.
Es können beliebig viele Tags vergeben werden, jedoch müssen sie eindeutig sein.
~/work/project > cvs commit -m ""
cvs commit: Examing .
~/work/project > cvs rtag REL_1_0 project
cvs rtag: Tagging project
Mit dem CVS-Befehl rtag
wird das Tag REL_1_0
erzeugt. Später kann man das Projekt mit der Option -r REL_1_0
(-r
für release)
~/work > cvs checkout -r REL_1_0 project
~/work > cd project
~/work/project >
auschecken. Die Dateien im Verzeichnis project
haben dann wieder obige Versionsnummern. Möchte man das Projekt in ein anderes Verzeichnis auschecken, dann muss man die Option -d name
verwenden. Z.B.: es soll REL_1_0
in das Verzeichnis rel1.0
ausgecheckt werden:
~/work > cvs checkout -r REL_1_0 -d rel1.0 project
~/work > cd rel1.0
~/work/rel1.0 >
Verwenden eines Tags für die Abgabe
Für die Abgabe verwenden Sie das Tag ABGABE_1_0
. Wollen Sie Korrekturen abgeben, dann verwenden Sie bitte ABGABE_1_1
, ABGABE_1_2
usw.
Gibt es für ein Beispiel mehrere (Teil-)Abgaben, so verwenden Sie für die erste Abgabe obiges Schema, für die zweite Abgabe ABGABE_2_0
bis ABGABE_2_n
(n
n. Abgabeversion) usw.
alte Versionen auschecken
Will man auf eine alte Version zugreifen, so kann man beim Auschecken angeben, welchen Zustand man haben will, in dem man die Option -D datum
angibt. datum
kann entweder in der englischen Schreibweise angegeben werden (MM/TT/JJJJ
), im ISO-Format (JJJJ-MM-TT
) oder auch relativ als Text unter Hochkomma (z.B.
, 3 weeks ago
oder 1 day ago 27 minutes ago
o.ä.).3 days ago
Das Projekt python
im Zustand vor einer Woche auschecken:
~/work > cvs co -D "1 week ago" python
cvs checkout: Updating python
U python/dreieck.py
U python/prim.py
~/work >
Das Projekt python
im Zustand vom 22.9.2006 auschecken:
~/work > cvs co -D 09/22/2006 python
cvs checkout: Updating python
U python/calc.py
U python/craten.py
U python/dreieck.py
U python/ggt.py
U python/mittelwert.py
U python/muster.py
U python/prim.py
U python/pyintro.pdf
U python/raten.py
U python/summe.py
~/work >
Ältere Versionen sollten in eigene Verzeichnisse ausgecheckt werden. Sobald eine bestimmte Version ausgecheckt wurde, ist sie sticky
(klebrig). Das bedeutet, dass sich alle Arbeiten in diesem ausgecheckten Verzeichnisbaum auf diese Version beziehen.
Daher ist das Weiterarbeiten an einer solchen Version nur sinnvoll bei Zweigen.
binäre Dateien
Unter binären Dateien verstehen wir hier Dateien, die nicht aus Textzeilen bestehen. Das sind z.B. Word- und Excel-Dateien, Bilder usw. CVS speichert normalerweise Textdateien und deren Zeilenänderungen. Dies ist bei Binärdateien nicht möglich. Wird z.B. eine Word-Datei nicht als Binärdatei markiert, so wird sie vom CVS zerstört
(Subversion, der Nachfolger von CVS, kann gut mit Binärdateien umgehen, CVS ist aber immer noch weit verbreitet...).
Damit nicht bei jedem cvs add
, cvs import" usw. die Option %-W
(für jede Dateiendung von Binärdateien einmal!) angegeben werden muss, schreibt man diese Dateien in die Konfigurationsdatei *.gif -k 'b'
CVSROOT/cvswrappers
.
Die Konfiguration eines Repositories befindet sich im Projekt
CVSROOT
, welches man auscheckt, bearbeitet und dann wieder eincheckt (commit).
~/work > cvs checkout CVSROOT
...
~/work > cd CVSROOT
~/work/CVSROOT > vim cvswrappers
Die Datei sollte z.B. so aussehen (Zeilen mit #
sind Kommentare, die schon enthalten sind):
# This file affects handling of files based on their names.
#
# The -m option specifies whether CVS attempts to merge files.
#
# The -k option specifies keyword expansion (e.g. -kb for binary).
#
# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers)
#
# wildcard [option value][option value]...
#
# where option is one of
# -f from cvs filter value: path to filter
# -t to cvs filter value: path to filter
# -m update methodology value: MERGE or COPY
# -k expansion mode value: b, o, kkv, &c
#
# and value is a single-quote delimited value.
# For example:
*.img -k 'b'
*.cramfs -k 'b'
*.jar -k 'b'
*.m2v -k 'b'
*.mvi -k 'b'
*.ppc -k 'b'
*.jffs* -k 'b'
*.nfi -k 'b'
# Microsoft
*.doc -k 'b'
*.xls -k 'b'
*.ppt -k 'b'
# Openoffice 1.*
*.stc -k 'b'
*.std -k 'b'
*.sti -k 'b'
*.stw -k 'b'
*.sxc -k 'b'
*.sxd -k 'b'
*.sxq -k 'b'
*.sxi -k 'b'
*.sxm -k 'b'
*.sxp -k 'b'
*.sxw -k 'b'
# dia
*.dia -k 'b'
# Bilder
*.xcf -k 'b'
*.jpg -k 'b'
*.bmp -k 'b'
*.gif -k 'b'
*.png -k 'b'
Für jeden Dateityp mit Binärformat gibt es eine Zeile der Form *.endung -k 'b'
.
Diese Einträge speichern, den Editor beenden und das Projekt wieder commiten
:
~/work/CVSROOT > cvs commit -m "Binärdateien bekanntgegeben"
...
Das Verzeichnis ~/work/CVSROOT
können Sie löschen, da Sie es ja jederzeit wieder auschekcen können, wenn Sie eine Dateiendung vergessen haben.
Ignorieren von Dateien/Verzeichnissen
Bestimmte Dateien im Projektverzeichnis will man nicht in die Versionsverwaltung aufnehmen, z.B. Testdateien à la xxx
oder die Sicherungsdateien vom vim (*~
- diese werden standardmäßig ignoriert), Klassendateien (*.class
) usw.
Dafür gibt es auch Kommandozeilenargumente für cvs (z.B. -I '*.class'
), aber besser ist es, diese Dateien ein für alle mal zu ignorieren
. Die Konfigurationsdatei heißt CVSROOT/cvsignore
. Leider existiert diese Datei in der Standardkonfiguration nicht und muss daher mit cvs add
aufgenommen werden.
Hat man CVSROOT
bereits ausgecheckt, so muss man die Datei mit einem Editor erzeugen:
~/work/CVSROOT > vim cvsignore
Bei mir hat die Datei folgenden Inhalt:
*.nfi
*.img
*.pyc
*.class
*.log
*.tmp
xxx
*.ppc
*.jffs*
*.cramfs
Dann muss man die Datei dem Repository hinzufügen und einchecken (commit):
~/work/CVSROOT > cvs add cvsignore
~/work/CVSROOT > cvs commit -m "zu ignorierende Dateien"
...
Abonnieren Posts [Atom]
Kommentar veröffentlichen