SVN (Subversion)
De GioWiki.
pour
SVN (Subversion)
Aller à :
Navigation
,
rechercher
== Création d'un dépôt svn pour un projet == svnadmin create /var/svn/projet Attention à ce que votre projet appartienne bien à svn et non à root chown -R svn:svn /var/svn/projet == Configuration == Vérifier que le port tcp 3690 est bien ouvert pour svn Lancer le daemon '''svnserve -d -r /var/svn''' afin de pouvoir se connecter au dépôt svn. === Création des utilisateurs SVN === Dans le répertoire /var/svn/projet/conf/ Il faut éditer le fichier svnserve.conf avec au minimum : <pre> [general] # Les utilisateurs non auth : none/read/write anon-access = none # Les utilisateurs auth : none/read/write auth-access = read # le fichier de password password-db = passwd # Cette option spécifie l'authentification du référentiel. # Si deux repo ont les mêmes référentiels d'authentification, # ils devraient avoir le même mot de passe de base de données, et vice versa. # Le domaine par défaut est le référentiel uuid. realm = projet1 </pre> Il faut éditer le fichier passwd pour qu'il ressemble à : <pre> [users] # nom = mot de passe user = password </pre> /!\ Attention à ne pas laisser d'espaces aux début des lignes, sinon ça ne fonctionne pas. === Automatiser le lancement de SVN === Jusqu'ici, le serveur SVN est lancé avec votre utilisateur. Ce qui implique que le serveur a les mêmes droits que vous. Il est donc recommandé de créer un utilisateur pour lancer le serveur et le définir comme propriétaire du dépôt (nous prendrons ici l'utilisateur svn) : addgroup svn --system adduser svn --system --home /var/svn --no-create-home --ingroup svn chown -R svn: /var/svn Maintenant que nous avons un utilisateur spécifique, pour exécuter SVN au démarrage, il faut créer un script exécutable /etc/init.d/svnserve/ contenant le code suivant. /!\ Attention à partir de Debian 6.0 il faut ajouter l'entête BEGIN INIT INFO pour éviter le problème suivant - insserv: warning: script 'svnserve' missing LSB tags and overrides <pre> #!/bin/sh # ### BEGIN INIT INFO # Provides: svnserve # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start and stop svnserve daemon at boot time # Description: Controls the main subversion server \svnserve\ with default params. ### END INIT INFO set -e if [ -x /usr/bin/svnserve ] ; then HAVE_SVNSERVE=1 else echo "Svnserve not installed." exit 0 fi . /lib/lsb/init-functions case "$1" in start) log_action_begin_msg "Starting SVN server" start-stop-daemon --start --chuid svn:svn --exec /usr/bin/svnserve -- -d -r /var/svn log_action_end_msg $? ;; stop) log_action_begin_msg "Stoping SVN server" start-stop-daemon --stop --exec /usr/bin/svnserve log_action_end_msg $? ;; force-reload|restart) $0 stop $0 start ;; *) echo "Usage: /etc/init.d/svnserve {start|stop|restart|force-reload}" exit 1 ;; esac exit 0 </pre> Ne pas oublier de rendre exécutable le script : chmod +x /etc/init.d/svnserve Vous pouvez alors respectivement le démarrer, redémarrer et arrêter à l'aide des commandes suivantes : /etc/init.d/svnserve start /etc/init.d/svnserve restart /etc/init.d/svnserve stop Pour ajouter le serveur SVN au démarrage de la machine : update-rc.d svnserve defaults == Commandes de base == http://doc.ubuntu-fr.org/subversion#commandes_de_base Pour les commandes suivantes on supposera que l'on est dans le répertoire local du svn mkdir projet_local cd projet_local Rapatrier le projet en local svn checkout svn://server/projet . --username user Vérifier l'état des fichiers local depuis le dernier checkout svn status Ajouter des fichiers au svn svn add fichier répertoire/ Mettre à jour sa version locale (à effectuer avant le commit) svn update Envoyer ses modification sur le serveur svn svn commit fichiers répertoires/ -m "Raison du commit" = Gestion d'un svn local = == Import des fichiers == svn import /var/www/projet file:///var/svn/projet/ -m "Premier Import" == Rapatriement du répertoire svn == svn checkout file:///var/svn/projet/ /var/www/projet/ = Éditer un message de commit = Si vous avez oublié de mettre un message à votre commit ou bien si il est incomplet, voici la procédure à suivre pour pouvoir éditer ce log. Tout d'abord, sur le dépôt de votre projet (sur le serveur svn), allez faire les actions suivantes : cd /var/svn/projet/hooks/ cp pre-revprop-change.tmpl pre-revprop-change chown svn:svn pre-revprop-change chmod a+x pre-revprop-change Ensuite, de retour dans votre répertoire habituel de travail, tapez la commande suivante : svn propset -r <numero_de_revision> --revprop svn:log "<Nouveau message de commit.>" Vous n'avez plus qu'a supprimer le fichier précédemment copié sur le serveur pour interdire de nouveau l'édition des messages de logs rm /var/svn/projet/hooks/pre-revprop-change = Activer le tag $Id$ = Toutes les modifications suivantes sont à faire sur votre poste de travail et non côté serveur. Éditer le fichier '''~/.subversion/config''' Dans la partie miscellany, activez l'option suivante. [miscellany] enable-auto-props = yes Dans la partie auto-props, ajouter la ligne suivante pour prendre en compte cette option pour tous les types de fichiers (*). [auto-props] * = svn:keywords=Id Vous pouvez gérer les tags Id uniquement pour certains types de fichiers. *.php = svn:keywords=Id Ensuite, il ne vous reste plus qu'à ajouter cette variable ( $Id$ ) à l'endroit voulu dans votre code. # $Id: nom_fichier numero_release date heure auteur $ Par contre, les fichiers déjà existants ne sont pas pris en compte automatiquement. Il faut utiliser svn propset pour préparer les propriétés automatiques des fichiers existants. Il faut bien sûr commit le fichier préparé pour prendre en compte les modifications. La variable $Id$ sera complétée automatiquement au moment de ce commit. svn propset svn:keywords Id mon_fichier svn commit -m "Updating automatic properties" mon_fichier Informations complémentaires : [http://www.startupcto.com/server-tech/subversion/setting-the-id-tag] [http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.keywords.html]
Revenir à la page
SVN (Subversion)
.
Affichages
Page
Discussion
Voir le texte source
Historique
Outils personnels
Connexion
Navigation
Accueil
Communauté
Actualités
Modifications récentes
Page au hasard
Aide
Rechercher
Boîte à outils
Pages liées
Suivi des pages liées
Pages spéciales