Table of Contents

SVN et CVS

Creer un repositorie

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

Utilisation

SVN et CVS permettent de travailler à plusieurs sur des fichiers.
Commandes de base:

CVS

#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

SVN

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)

Creation d'un patch

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"

Ssh advanced redirection

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

Gestion des utilisateurs

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

Branches

#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