Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
subversion [Le 31/03/2011, 02:50] – neopi21 | subversion [Le 21/04/2019, 19:20] (Version actuelle) – fix LSB section in init script 77.129.186.101 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | |||
+ | ====== Subversion ====== | ||
+ | |||
+ | **Subversion** (abrégé SVN) est un [[wpfr> | ||
+ | |||
+ | ===== Installation ===== | ||
+ | |||
+ | Toute installation de SVN nécessitera l' | ||
+ | |||
+ | Une bonne base pour les futurs dépôts ("// | ||
+ | |||
+ | sudo mkdir /var/svn | ||
+ | |||
+ | C'est dans ce dossier que vous créerez vos futurs // | ||
+ | <note important> | ||
+ | |||
+ | |||
+ | ===== Configuration ===== | ||
+ | |||
+ | SVN peut être installé de plusieurs façons : | ||
+ | * Seul, en local, l' | ||
+ | * seul, en mode serveur, c' | ||
+ | |||
+ | * ou administré via un module d' | ||
+ | |||
+ | <note tip> | ||
+ | * Dans les 2 derniers cas, dans l' | ||
+ | * La configuration SVN + Apache (avec le module // | ||
+ | </ | ||
+ | ==== Serveur SVN seul ==== | ||
+ | |||
+ | Tout d' | ||
+ | |||
+ | cd /var/ | ||
+ | sudo mkdir svn | ||
+ | sudo svnadmin create / | ||
+ | |||
+ | === Création des utilisateurs SVN === | ||
+ | |||
+ | Vous pouvez ensuite éditer les fichiers de configuration (pour choisir mot de passe et autres) dans le répertoire créé (nous considérerons le dépôt // | ||
+ | |||
+ | |||
+ | Dans le répertoire / | ||
+ | |||
+ | il faut éditer le fichier svnserve.conf avec au minimum : | ||
+ | |||
+ | |||
+ | [general] | ||
+ | # Les utilisateurs non auth : none/ | ||
+ | anon-access = none | ||
+ | # Les utilisateurs auth : none/ | ||
+ | auth-access = write | ||
+ | # le fichier de password | ||
+ | password-db = passwd | ||
+ | # Cette option spécifie l' | ||
+ | # Si deux repo ont les mêmes référentiels d' | ||
+ | # 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 | ||
+ | |||
+ | <note important> | ||
+ | Il ne faut pas mettre d' | ||
+ | </ | ||
+ | il faut éditer le fichier passwd pour qu'il ressemble à : | ||
+ | |||
+ | |||
+ | [users] | ||
+ | # nom | ||
+ | joeuser = joepassword | ||
+ | jayrandom = randomjay | ||
+ | |||
+ | les mots de passe sont en clair dans ce fichier, il convient donc d'en interdire l' | ||
+ | |||
+ | |||
+ | sudo chmod o-r / | ||
+ | sudo chmod o-r / | ||
+ | |||
+ | |||
+ | === Lancer le serveur === | ||
+ | |||
+ | Pour lancer le serveur, il suffit d' | ||
+ | |||
+ | sudo svnserve -d -r /var/svn | ||
+ | |||
+ | Il est possible (et conseillé) d' | ||
+ | |||
+ | Le port par défaut écouté par svnserve est 3690. | ||
+ | |||
+ | === Accès === | ||
+ | |||
+ | Le dépôt créé est désormais accessible, via les [[# | ||
+ | |||
+ | [[svn:// | ||
+ | |||
+ | === Automatiser le lancement de SVN === | ||
+ | |||
+ | Jusqu' | ||
+ | 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' | ||
+ | |||
+ | sudo addgroup svn --system | ||
+ | sudo adduser svn --system --home /var/svn --no-create-home --ingroup svn | ||
+ | sudo chown -R svn: /var/svn | ||
+ | |||
+ | <note warning> | ||
+ | **sudo -u svn svnadmin create / | ||
+ | |||
+ | Maintenant que nous avons un utilisateur spécifique, | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/sh | ||
+ | ### BEGIN INIT INFO | ||
+ | # Provides: | ||
+ | # Required-Start: | ||
+ | # Required-Stop: | ||
+ | # Default-Start: | ||
+ | # Default-Stop: | ||
+ | # Short-Description: | ||
+ | ### END INIT INFO | ||
+ | |||
+ | set -e | ||
+ | if [ -x / | ||
+ | HAVE_SVNSERVE=1 | ||
+ | else | ||
+ | echo " | ||
+ | exit 0 | ||
+ | fi | ||
+ | |||
+ | . / | ||
+ | |||
+ | case " | ||
+ | start) | ||
+ | log_action_begin_msg " | ||
+ | / | ||
+ | log_action_end_msg $? | ||
+ | ;; | ||
+ | stop) | ||
+ | log_action_begin_msg " | ||
+ | / | ||
+ | log_action_end_msg $? | ||
+ | ;; | ||
+ | force-reload|restart) | ||
+ | $0 stop | ||
+ | $0 start | ||
+ | ;; | ||
+ | *) | ||
+ | echo " | ||
+ | exit 1 | ||
+ | ;; | ||
+ | esac | ||
+ | |||
+ | exit 0 | ||
+ | </ | ||
+ | |||
+ | * ne pas oublier de rendre exécutable le script : | ||
+ | |||
+ | sudo chmod +x / | ||
+ | |||
+ | Vous pouvez alors respectivement le démarrer, redémarrer et arrêter à l'aide des commandes suivantes : | ||
+ | |||
+ | sudo / | ||
+ | sudo / | ||
+ | sudo / | ||
+ | |||
+ | * Pour ajouter le serveur SVN au démarrage de la machine : | ||
+ | |||
+ | sudo update-rc.d svnserve defaults | ||
+ | |||
+ | Note : les LSBize initScript ont changé de format; vous pouvez avoir un message d' | ||
+ | |||
+ | ==== Serveur SVN + Apache ==== | ||
+ | |||
+ | Pour installer un serveur SVN utilisant le serveur web [[Apache]], nous aurons besoin d' | ||
+ | |||
+ | Il faut donc [[: | ||
+ | |||
+ | === Configuration d' | ||
+ | |||
+ | Il est nécessaire dans un premier temps d' | ||
+ | |||
+ | sudo a2enmod dav_svn | ||
+ | |||
+ | La configuration principale du serveur SVN se situe maintenant dans le fichier **''/ | ||
+ | |||
+ | |||
+ | Il y a deux orientations de configuration: | ||
+ | |||
+ | * Configurer tous les dépôts un par un, ce qui permet de gérer les autorisations dépôt par dépôt mais qui oblige à modifier la configuration d' | ||
+ | |||
+ | * Configurer un répertoire parent de tous les dépôts, ce qui n' | ||
+ | |||
+ | Une source classique d' | ||
+ | |||
+ | === Configuration au cas par cas === | ||
+ | |||
+ | Ici nous considérons que le nom du dépôt que l'on veut créer s' | ||
+ | |||
+ | Ouvrir le fichier **''/ | ||
+ | |||
+ | < | ||
+ | |||
+ | Enlever le commentaire sur la ligne pour activer le module: | ||
+ | |||
+ | DAV svn | ||
+ | |||
+ | Enlever le commentaire et faire pointer vers votre répertoire SVN la ligne suivante vers l' | ||
+ | |||
+ | SVNPath / | ||
+ | |||
+ | Enlever le commentaire devant la ligne de fermeture de l' | ||
+ | |||
+ | </ | ||
+ | |||
+ | Redémarrer Apache: | ||
+ | |||
+ | sudo / | ||
+ | |||
+ | [[# | ||
+ | |||
+ | sudo svnadmin create / | ||
+ | find / | ||
+ | find / | ||
+ | chown -R www-data: | ||
+ | | ||
+ | Vérifier à l'aide d'un navigateur que http:// | ||
+ | |||
+ | Pour ajouter un deuxième répertoire, | ||
+ | |||
+ | === Configuration globale === | ||
+ | |||
+ | Dans ce cas on a juste besoin de connaître l'url de la racine des dépôts et l' | ||
+ | // | ||
+ | |||
+ | Ouvrir le fichier **''/ | ||
+ | |||
+ | < | ||
+ | |||
+ | Enlever le commentaire sur la ligne pour activer le module: | ||
+ | |||
+ | DAV svn | ||
+ | |||
+ | Enlever le commentaire et faire pointer vers la racine de votre répertoire SVN la ligne suivante: | ||
+ | |||
+ | SVNParentPath /var/svn | ||
+ | |||
+ | Ajouter cette ligne après SVNParentPath si vous voulez que //la racine// http:// | ||
+ | |||
+ | SVNListParentPath On | ||
+ | |||
+ | Enlever le commentaire devant la ligne de fermeture de l' | ||
+ | |||
+ | </ | ||
+ | |||
+ | Redémarrer Apache: | ||
+ | |||
+ | sudo / | ||
+ | |||
+ | Vérifier à l'aide d'un navigateur que http:// | ||
+ | |||
+ | Maintenant vous pouvez créer autant de dépôts que vous voulez dans le répertoire racine puis donner les droits de modification à Apache, ils seront accessibles sans redémarrer Apache. | ||
+ | |||
+ | Créez le dépôt // | ||
+ | sudo svnadmin create / | ||
+ | sudo chown -R www-data: | ||
+ | |||
+ | === Authentification === | ||
+ | |||
+ | [[: | ||
+ | |||
+ | AuthType Basic | ||
+ | AuthName "Depot Subversion" | ||
+ | AuthUserFile / | ||
+ | Require valid-user | ||
+ | |||
+ | Puis créer, avec '' | ||
+ | |||
+ | sudo htpasswd -cs / | ||
+ | |||
+ | Pour créer d' | ||
+ | |||
+ | sudo htpasswd -s / | ||
+ | |||
+ | Faire appartenir ce fichier à l' | ||
+ | |||
+ | sudo chown www-data: | ||
+ | |||
+ | Redémarrer à nouveau Apache : | ||
+ | |||
+ | sudo / | ||
+ | |||
+ | <note important> | ||
+ | === Accès === | ||
+ | |||
+ | Votre dépôt doit maintenant être accessible //via// les [[# | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Si vous avez suivi la procédure d' | ||
+ | |||
+ | ==== Subversion et Eclipse ==== | ||
+ | |||
+ | Subversive et Subclipse sont tous deux des greffons pour Eclipse permettant de se connecter à un dépôt SVN. | ||
+ | |||
+ | === Subversive === | ||
+ | |||
+ | Voir le tutoriel spécifique : [[eclipse_subversive|Subversive]] | ||
+ | |||
+ | === Subclipse === | ||
+ | |||
+ | Voir le tutoriel spécifique : [[eclipse_subclipse|Subclipse]] | ||
+ | |||
+ | ===== Utilisation ===== | ||
+ | |||
+ | ==== Créer un Dépôt SVN ==== | ||
+ | |||
+ | Vous pouvez créer un // | ||
+ | |||
+ | sudo svnadmin create / | ||
+ | |||
+ | ==== Commandes de base ==== | ||
+ | |||
+ | === Créer une copie de travail locale === | ||
+ | |||
+ | Commande à exécuter dans le **répertoire parent**, qui contiendra la copie locale : | ||
+ | |||
+ | svn checkout svn:// | ||
+ | |||
+ | Si l' | ||
+ | |||
+ | svn checkout --username nom svn:// | ||
+ | |||
+ | Ceci créera un dossier //projet1// contenant les sources du dépôt. | ||
+ | |||
+ | Les commandes suivantes sont à exécuter **depuis la copie de travail** locale. | ||
+ | |||
+ | === Mettre à jour sa copie === | ||
+ | |||
+ | Pour récupérer les dernières modifications du dépôt et ainsi mettre sa copie de travail à jour, il suffit de taper : | ||
+ | |||
+ | svn update | ||
+ | |||
+ | === Envoyer ses modifications === | ||
+ | |||
+ | Pour valider et apporter ses modifications au dépôt, il suffit de : | ||
+ | |||
+ | svn commit -m " | ||
+ | |||
+ | Le message du //commit// (option //-m//) est obligatoire, | ||
+ | |||
+ | Si vous voulez changer l' | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | === Ajouter un fichier === | ||
+ | |||
+ | Si vous ajoutez un nouveau fichier à votre copie locale, il ne sera pas envoyé au dépôt lors du prochain //commit//. Il faut déclarer l' | ||
+ | |||
+ | svn add < | ||
+ | |||
+ | //add// déclare l' | ||
+ | |||
+ | === Supprimer un fichier === | ||
+ | |||
+ | Fonctionnant comme pour l' | ||
+ | |||
+ | svn delete < | ||
+ | |||
+ | |||
+ | === Importer un répertoire local existant === | ||
+ | |||
+ | L' | ||
+ | |||
+ | svn import votre_repertoire URL_svn | ||
+ | |||
+ | " | ||
+ | |||
+ | svn import votre_repertoire file:/// | ||
+ | | ||
+ | === Retour en arrière === | ||
+ | Connaître les révisions: | ||
+ | < | ||
+ | S'il y en a beaucoup, on peut les rediriger dans un fichier pour l' | ||
+ | < | ||
+ | |||
+ | Retour en arrière (remplacer //###// par le numéro de la révision): | ||
+ | < | ||
+ | |||
+ | ==== Client SVN graphique ==== | ||
+ | |||
+ | * [[rapidSVN]] n'est pas mal du tout, il permet de réaliser toutes les actions de base en mode graphique. | ||
+ | |||
+ | * esvn (très léger) permet de travailler avec des " | ||
+ | |||
+ | * kdesvn | ||
+ | |||
+ | ==== Intégration à Nautilus ==== | ||
+ | |||
+ | === RabbitVCS === | ||
+ | |||
+ | Anciennement appelé NautilusSVN, | ||
+ | |||
+ | RabbitVCS est disponible en paquet | ||
+ | * dans les dépôts officiels depuis la version 10.10 d' | ||
+ | * et dans le [[https:// | ||
+ | |||
+ | Installation : | ||
+ | * pour Ubuntu 12.04 et 11.10 (utilisant le Nautilus de gnome 3) : en attendant la [[https:// | ||
+ | |||
+ | * pour Ubuntu 10.10 et 11.04, les dépôts officiels suffisent | ||
+ | * pour Ubuntu 9.10 à 10.10, utiliser le PPA | ||
+ | [[: | ||
+ | |||
+ | * pour Ubuntu 8.04 à 9.04 : [[http:// | ||
+ | |||
+ | |||
+ | === Scripts SVN pour Nautilus === | ||
+ | |||
+ | Pour vous éviter d' | ||
+ | |||
+ | [[: | ||
+ | Installez le paquet]] **[[apt> | ||
+ | |||
+ | Puis activez-le : | ||
+ | |||
+ | nautilus-script-manager enable Subversion | ||
+ | |||
+ | Et enfin redémarrez [[Nautilus]] : | ||
+ | |||
+ | FIXME La commande nautilus --restart ne fonctionne pas. A remplacer par nautilus restart (Ubuntu 9.10 et +) | ||
+ | |||
+ | FIXME La commande nautilus restart ne fonctionne pas non plus (Ubuntu 10.10). Il faut faire nautilus -q puis relancer nautilus | ||
+ | |||
+ | nautilus --restart | ||
+ | |||
+ | ou : | ||
+ | | ||
+ | nautilus restart | ||
+ | |||
+ | ==== Intégration à Nemo ==== | ||
+ | |||
+ | === RabbitVCS === | ||
+ | Un port de la version Nautilus a été réalisé pour Nemo. Pour cela : | ||
+ | - ajoutez le [[https:// | ||
+ | - [[: | ||
+ | Installez le paquet]] **[[apt> | ||
+ | |||
+ | ==== KDESVN : plugin SVN pour Konqueror ==== | ||
+ | |||
+ | Avantage non négligeable pour certains, le plugin est accessible en français. | ||
+ | |||
+ | Tout d' | ||
+ | |||
+ | [[http:// | ||
+ | * le dépôt lui-même : indiquez dans la barre d' | ||
+ | * votre copie locale : indiquez dans la barre d' | ||
+ | |||
+ | Une fois le dépôt ou répertoire affiché, allez dans le menu de Konqueror et cliquez sur " | ||
+ | |||
+ | À noter aussi, que ce soit dans Dolphin, Konqueror ou les dossiers sous formes de plasmoïdes, | ||
+ | |||
+ | ==== Colorsvn ==== | ||
+ | Pour ajouter de la couleur dans l' | ||
+ | |||
+ | Téléchargez l' | ||
+ | |||
+ | Décompressez l' | ||
+ | < | ||
+ | L' | ||
+ | < | ||
+ | $ ./configure | ||
+ | $ make | ||
+ | $ sudo make install | ||
+ | </ | ||
+ | Enfin ajoutez un alias en fin de .bashrc (ou .bash_aliases) | ||
+ | < | ||
+ | |||
+ | ==== git-svn ==== | ||
+ | Il est possible d' | ||
+ | Pour cela, il faut installer [[apt> | ||
+ | Plus d' |