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 28/09/2012, 16:35] – [Serveur SVN + Apache] 87.64.122.190 | 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' | ||
