Subversion

De Bricosoft.

Cette page concerne l'installation d'un serveur svn dans le userland.

Sommaire

[modifier] Installation

$ sudo apt-get install subversion

Creation d'une repo :

$ svnadmin create ~/depots

Droits :

$ vim ~/depots/conf/svnserve.conf
anon-access = none
auth-access = write
$ vim ~/depots/conf/passwd
jujube = totoche

Lancer le serveur :

$ sudo svnserve -d -r depots

Premier ajout de sources :

svn import -m "mon premier import" chemin/mes_projets svn://localhost/mes_projets

Ne pas créer ~/depots/mes_projets, l'import va le créer.

Vérification (ailleurs dans un autre dossier):

$ svn co svn://localhost/mes_projets verif_checkout_de_mes_projets

[modifier] Production

Mes sites-enabled ont des Directory qui pointent vers une copie de travail (svn co ...) mais les .svn/ sont accessibles depuis le web.

# vim /etc/apache2/conf.d/virtual-host.conf

Rajoutez :

RedirectMatch 404 .*/\.svn(/|$)

L'accès à .svn ou sous-repertoires retournera une erreur de page "non trouvée" (un éventuel attaquant ne pourra pas savoir qu'ils existent).

[modifier] svn:externals

Cherchez pas plus loin, svn:externals vous évitera de perdre du temps. Et comme temps == argent == femmes, vous allez devenir un tombeur (non garanti).

(facultatif) Dans votre working copy :

mkdir vendor
cd vendor/
svn propedit svn:externals .
VendorLib/ http://svn.vendor.org/trunk/VendorLib/
svn up
svn ci -m "+VendorLib"

Autre exemple en une seule commande (ici avec le versatile Zend Framework) :

$ pwd
/home/totoche/mes_projets/my_killer_app/library

Vous souhaitez avoir dans library/ le dossier Zend/ et tous ses objets : Zend/View.php, Zend/Json.php, Zend/Feed.php, etc

$ svn propset svn:externals "http://framework.zend.com/svn/framework/standard/trunk/library/Zend Zend" .
Propriété 'svn:externals' définie sur '.'
$ ls
My

Vous allez vous dire : "quels boulets chez bricosoft.com, faut créer le dossier Zend avant FFS!". Ben nan je vous arrête, palsembleu ! Faites juste un update.

$ svn update
Récupération de la référence externe dans 'Zend'
A    Zend/File
A    Zend/File/Transfer
A    Zend/File/Transfer/Adapter
...
$ ls
My Zend

preggo.

[modifier] problèmes

Effacer un .project committé par erreur et qui flingue l'import (New Project from SVN dans Eclispe) :

svn del http://svn.myserver.fr/svn/module/trunk/.project

ou :

svn del svn://svn.myserver.fr/svn/module/trunk/.project

[modifier] Sources

Plus