Creation d’un repositorie avec svn (dans /home/ctaf/svn)
mkdir /home/ctaf/svn
chmod 700 /home/ctaf/svn
svnadmin create /home/ctaf/svn/repo
SVN et CVS permettent de travailler à plusieurs sur des fichiers.
Commandes de base:
#rapatrie les sources a partir du repo #checkout from IPSERVER with ssh export CVS_RSH=ssh export CVSROOT=ctaf@IPSERVER/home/ctaf/svn/repo cvs co #checkout en local export CVS_RSH=ssh export CVSROOT=ctaf@localhost/home/ctaf/svn/repo cvs co #add one file cvs add file #commit modification #upload modification on the svn serv cvs ci #update local file from repo #-d allow cvs to update directory too (dans le cas de nouveau dossier dans le repo) cvs up -d
Les fichiers sont stokés dans un dossier, qui pourra etre accédé par différentes methodes:
#rapatrie les sources a partir du repo #checkout from IPSERVER with ssh svn co svn+ssh://ctaf@IPSERVER/home/ctaf/svn/repo #checkout en local svn co svn+ssh://ctaf@localhost/home/ctaf/svn/repo #checkout sans ssh ni svnserve comme client svn co file:///home/ctaf/svn/repo #add one file to svn svn add file #commit modification #upload modification on the svn serv svn ci #remove a conflict for a file (svn only) #for cvs, you need t edit the conflicted file svn resolved file #update local file from repo #-d allow cvs to update directory too svn up
il est possible de passer un connection svn par un proxy(http/https) en utilisant le fichier .subversion/servers (le fichier contient les infos nécessaires)
création d’un patch entre la version du repo et votre version local:
cvs diff -u >mon_nouveau_patch.patch svn diff >mon_nouveau_patch.patch
creation d’un patch sans whitespace, sans tab, sans saut de ligne:
svn diff src/terminal.c --diff-cmd `which diff` -x "-w -E -u -B -b"
Il s’agit d’utiliser le serveur ssh d’une machine qui n’est accessible que par une autre machine. Il en resulte l’utilisation d’un tunnel ssh.
Cette methode demande l’utilisation d’un petit script shell pour faire les redirections. Attention a ceux quil ait les droit d’execution et que $PATH contienne le repertoire dans lequel il se trouve.
>cat sshe # !/bin/sh ssh -t IP_GATE ssh $1 #set new ssh tunnel and use it! export SVN_SSH="sshe" svn co svn+ssh://ctaf@IP_REPO/home/ctaf/svn/repo export CVS_RSH="sshe" export CVSROOT="ctaf@IP_REPO/home/ctaf/svn/repo" cvs co
Dans le but de restreindre l’accés a certain utilisateur, et surtout ne leur laisser que l’accés a CVS ou SVN, on utilise ssh. Avec ces restrictions l’utilisateur ne pourra pas avoir un shell sur votre compte par exemple, mais juste utiliser svn ou cvs.
dans ~/.ssh/authorized_keys rajouter command=”/opt/subversion/bin/svnserve -t” devant les clef des utilisateur n’ayant le droit d’utiliser que svn et command=”cvs server” devant les clef n’ayant le droit de lancer que cvs. ex:
command="svnserve -t" ssh-dss SSHKREYSDSKSKQSMQSDMDl
#create a branches: svn cp svn+ssh://server/svnroot/trunk svn+ssh://server/svnroot/branches/mybranch #switch between branch (to trunk): svn switch svn+ssh://server/svnroot/trunk #to mybranch svn switch svn+ssh://server/svnroot/branches/mybranch #change the url of a repository svn switch --relocate svn+ssh://server/previous/svnroot/trunk svn+ssh://server/new/svnroot/trunk