Inhaltsverzeichnis

Subversion Tips

CVS Tips

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 <project name>' (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~~