[[svn tips|Subversion Tips]]
====== CVS Tips ======
===== Links =====
* [[http://ximbiot.com/cvs/wiki/index.php?title=Cederqvist|Cederqvist online]]
* info cvs (Cederqvist offline)
* info cvsclient (connection & authentication methods)
===== Client Configuration =====
# ~/.profile
export EDITOR="/usr/bin/vim"
# Connect To Server on the same Machine:
#export CVSROOT="/home/cvsroot"
# Or connect to remote Server via ssh (preferred):
export CVS_RSH="/usr/bin/ssh"
export CVSROOT=":ext:username@domaninname:/home/cvsroot"
#"ext" means: Use rsh or a clone. CVS_RSH specifies the rsh clone
# Or connect to remote Server via pserver:
#export CVSROOT=":pserver:becki@etb.kaeser.de:/home/cvsroot"
===== Server Configuration =====
For access via pserver see master11.slack.hist (obsolete)
For access via ssh imho no config at all is necessary.
===== Branches =====
**cvs tag -b branchTagName**
Wenn die Files im Arbeitsverzeichnis verändert wurden, die Änderungen aber nicht in den MainTrunk mit aufgenommen werden sollen wird auf diese Weise der branch mit symbolischen Namen 'branchTagName' IM REPOSITORY generiert, auf Basis des letzten commits/updates (die Files bleiben danach im Status locally modified, das Arbeitsverzeichnis bleibt noch im mainTrunk)
**cvs update -r branchTagName**
Mit dem Arbeitsverzeichnis in den oben gebildeten branch wechseln (wichtig, sonst bleibt man im mainTrunk (die Files bleiben danach immer noch im Status locally modified, erst nach commit ändert sich das)
Ob man mit dem working dir in einem Branch ist, sagt das sticky tag bei cvs status
(Mit "cvs update -A" gehts wieder zurück in den main trunk)
Note: A ''cvs log'' seems not to work as expected here. It displays only the changes of the main trunk, even though you changed with your working dir to the branch. An additional ''-rbranchTagName'' (here no space between -r and branchTagName!) is necessary.
**cvs co -r branchTagName** Einen Branch auschecken
Es werden die aktuellsten Files des Branches ausgecheckt, obwohl branchTagName bei Geburt des Branches vergeben wurde (siehe oben: cvs tag -b branchTagName)
**cvs co -r tagEinerAltenVersion** Eine ältere Version auschecken.
Möchte man zB einen Patch (Bugfix) für diese ältere Version bilden, muß man davon erst einen Branch bilden & mit dem Arbeitsverzeichnis in diesen wecheln, wie oben beschrieben. Ansonsten bricht ein anschließendes commit mit einer Fehlermeldung ab.
**cvs update -j branchTagName [File]** Merge changes form a branch to main trunk
Wenn das WorkingDir auf dem MainTrunk arbeitet & alles upToDate ist, werden alle Änderungen vom Beginn des Branches branchTagName bis zu seiner neuesten Revision in das WorkingDir gemerged (-j = join) ("cvs update -j 1" merged in die umgekehrte Richtung)
===== Old/unsorted =====
cvs history
Zeigt für den user, der den Aufruf macht, alle aktuell ausgecheckten Projekte
Eine Datei nächträglich als binär kennzeichen (How to store binary files)
cvs admin -kb datei
cvs update -A datei
cvs release [-d] projektverzeichnis
Ausgecheckte Kopie des Projekts aufgeben (für log wichtig) [& löschen]
Arbeisverzeichnis muß 1 über Projektverzeichnis liegen
Das Projektverzeichnis ist das 1. Verzeichnis in der Hierarchie, das CVS-Verzeichnis enthält
-d: Delete the given directory
cvs -d :pserver:becki@130.1.200.11:/home/cvsroot login
Einmalig notwendiges Login in einen entfernten pServer (-d overrides $CVSROOT)
alternativ:
export CVSROOT=:pserver:anon@cvs.nitmtl.ca:/cvsroot
cvs login
cvs -d :pserver:becki@130.1.200.11:/home/cvsroot export -D today fine
Projekt fine von einem remote pServer holen
cvs --help-commands
zeigt alle verfügbaren Kommandos
cvs init
Arbeitsverseichnis egal, einmalig auszuführen nach dem $CVSROOT gesetzt ist, generiert das Verz. 'CVSROOT' in $CVSROOT
cvs log -S -rTAG1::[TAG2]
zeigt die Änderungshistorie für alle geänderten Files nach TAG bis zum letzten Commit [bzw. bis TAG2 inclusive]
cvs log [file]
zeigt die Änderungshistorie
cvs diff --brief -r cdw0-2 -r cdw0-2-01
geänderte Dateien zwischen 2 Tags anzeigen
cvs diff [-c] -r 1.6 -r 1.7 httpc.c
Zeigt die Unterschiede 2er revisionen, -c zeigt's ausführlich
cvs status [-v] [files]
Gibt eine schöne Übersicht
remove a project from the repository
`cd' into the repository and `rm -rf ' (discouraged, from cvshome.org FAQ-O-Matic)
cvs tag -c tag-name
ausgecheckte revisions des Arbeitsverzeichnisses und darunter mit der Release-Bezeichnung 'tag-name' versehen; -c überprüft, daß lokal nichts geändert wurde
cvs tag -d tag-name
Tag 'tag-name' im Repositroy löschen
cvs import [-m "release message"] projektname vendor revision
Dateien des Arbeitsverzeichnisses als 'projektname' importieren
cvs import becki/projekt vendor revision
Dateien des Arbeitsverzeichnisses und darunter wandern nach $CVSROOT/becki/poject
cvs export -D now projekt
aktuellste Version ohne cvs-Unterstützung holen ('now' durch ausprobieren)
-P Prune empty Dirs is NOT possible
cvs export -d willi -r v4 becki/bct/sms
Verzeichnis willi im $PWD erstellen & den Inhalt von becki/bct/sms dahin exportieren.
Im den Quelltexten wird $Name$ durch $Name: v4 $ ersetzt, da v4 ein Tag ist.
cvs checkout [-P] projekt
cvs co projekt
Arbeitsverzeichnis für Projekt 'projekt' generieren
-P: Leere Verzeichnisse nicht mit auschecken, ist generell zu empfehlen, da einmal angelegte Verzeichnisse nicht mehr gelöscht werden können
cvs co -d sms becki/bct/sms
Erzeuge im CWD das Verz sms & checke nur die Files des Sub-projekts sms in das erzeugte Verz aus
cvs [-n] update -d -P [-C] [file]
Von Anderen gemachte Änderungen der CVS-Files in den eigenen Files integrieren
-n Do not execute anything that will change the disk
-d Build directories, like checkout does (WICHTIG - immer verwenden!)
-P Prune empty directories (wichtig)
-C Overwrite locally modified files with clean repository copies.
cvs commit [file]
cvs ci [file]
Eigene Änderungen durch Erzeugen einer neuen Revision publizieren
cvs add file
Datei 'file' zum hinzufügen markieren, wird tatsächlich erst beim nächsten commit hinzugefügt
cvs rm file
Datei 'file' zum löschen markieren, wird tatsächlich erst beim nächsten commit gelöscht
CVS command synonyms are:
add ad new
admin adm rcs
annotate ann
checkout co get
commit ci com
diff di dif
export exp ex
history hi his
import im imp
log lo
login logon lgn
rannotate rann ra
rdiff patch pa
release re rel
remove rm delete
rlog rl
rtag rt rfreeze
status st stat
tag ta freeze
update up upd
version ve ver
!ANFANG!
~~DISCUSSION~~