[[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~~