Accueil
 

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:

  • checkout (co): recuppere tous les fichiers à partir du repositorie
  • update (up) : update notre repertoire local à partir du repositorie, n’écrase pas nos modifications en local
  • commit (ci) : envoie nos modifications local vers le repositorie
  • add : ajoute un fichier dans le systeme de controle de version
  • remove : supprime le fichiers du systeme de controle de version

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:

  • svn+ssh ⇒ svn lance une connection ssh et execute svnserve sur la machine distante pour recupérer les fichiers demandés
  • file ⇒ recupere les fichiers directement en local
  • svn ⇒ recupere les fichiers a partir un serveur svnserve. (svnserve est utilisé comme un daemon sur le serveur dans ce cas)
#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.

  • IP_GATE est l’ip de la gate permettant l’accés a la machine qui contient le repo (la machine ac l’ip IP_REPO)
  • IP_REPO est l’ip de la machine sur laquel on souhaite acceder on repositorie

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


 
svn.txt · Last modified: 2008/04/29 10:51 by ctaf
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki