Difference between revisions of "SVN/Fr"
Line 182: | Line 182: | ||
Il est possible de déposer votre clé SSH (publique) sur les serveurs de Tuxfamily. Cela vous permet de ne pas taper votre mot de passe à chaque opération effectuée sur le serveur Subversion. | Il est possible de déposer votre clé SSH (publique) sur les serveurs de Tuxfamily. Cela vous permet de ne pas taper votre mot de passe à chaque opération effectuée sur le serveur Subversion. | ||
− | + | *Pour la déposer, il faut copier le contenu de votre clé publique dans le fichier ##ssh_keys## (le créer si besoin) qui est placé dans votre répertoire de départ (répertoire home). Ce répertoire home est celui sur lequel vous arrivez lorsque vous vous identifiez sur le serveur FTP. | |
− | + | *Ce fichier doit être placé et avoir un chmod de 700 (faire le chmod 700 à l'aide du client ftp). | |
Autrement dit, seul VOUS, utilisateur, avez le droit de lire, d'écrire et d'exécuter ce fichier. | Autrement dit, seul VOUS, utilisateur, avez le droit de lire, d'écrire et d'exécuter ce fichier. | ||
Revision as of 03:49, 5 February 2007
Dépot SVN
Other languages : EnSVN, SpSVN
Contents
- 1 Description
- 2 Dépendances
- 3 Création
- 4 Modération
- 5 Comment l'administrer (panel)
- 6 Comment l'utiliser
- 7 Remarques diverses
- 8 Liens utiles
Description
Subversion est le successeur de CVS petite présentation ici : https://forge.ipsl.jussieu.fr/docipsl/wiki
Dépendances
Création
- Rendez vous sur le panel
- cliquez sur le lien du projet auquel vous voulez ajouter un dépot SVN
- choisissez le nom de votre dépot
- validez
conseils de création
- ne choisissez pas un nom trop générique
- Pensez à remplir la description pour éviter les soucis avec les modos ;)
Modération
Cet objet est soumis à la modération voir : ici
Comment l'administrer (panel)
Configuration
Comment gerer les droits de mon groupe
Comment le détruire
Comment l'utiliser
Bon, vous avez pris un hébergement chez Tuxfamily, c'est bien. Vous avez opté pour un repository subversion, c'est mieux. Nous allons vous expliquer comment utiliser tout cela.
Utilisation basique
Check out
Nous partons du principe que vous souhaitez faire ici une utilisation basique de Subversion. Commencez par faire un checkout de votre repository
svn co svn+ssh://VOTREUSER@svn.tuxfamily.org/svnroot/VOTREPROJET/NOMDUREPOSITORY
(remplacez bien sur VOTREUSER par votre nom d'utilisateur sur le panel, VOTREPROJET par le nom du projet auquel appartient le repository de nom NOMDUREPOSITORY).
Attention, votre mot de passe risque de vous être demandé plusieurs fois, jusqu'à 3 fois. Cela n'est pas un bug, c'est dû à svn qui utilise plusieurs connexions, il vous faudra donc rentrer votre mot de passe autant de fois qu'il vous sera demandé, ou utiliser une clef ssh (voir plus bas).
Pour tester votre accès au référentiel subversion, vous pouvez utiliser quelque chose dans ce goût là :
[soda@evira:/tmp/subversion] svn co svn+ssh://sod@svn.tuxfamily.org/svnroot/vhffs4/vhffs repertoire Révision 0 extraite. [soda@evira:/tmp/subversion] $
Alléluïa, tout fonctionne. Le répertoire ##repertoire## a été créé (ajouté à la fin de la commande), il est bien sûr vide puisque votre référentiel ne contient aucun fichier.
Création du layout de base
Bien que ce ne soit pas une obligation, il est conseillé d'organiser votre référentiel comme suit :
SVNROOT | |_ branches |_ tags |_ trunk
Cela vous facilitera la vie lors de l'évolution de votre projet : le répertoire trunk contiendra toujours la dernière version en cours de développement, tags servira uniquement à noter des versions (il est conseillé de créer un tags à chaque release afin que les utilisateurs puissent obtenir facilement le code correspondant à une version donnée) tandis que branches permettra d'ajouter des fonctionnalités encore trop instables pour être présentes dans le trunk.
Import initial
Si vous n'avez pas encore de fichiers à placer sous subversion, vous pouvez créer le layout simplement :
cd /tmp mkdir monprojet cd monprojet && mkdir trunk && mkdir branches && mkdir tags svn import . svn+ssh://UTILISATEUR@svn.tuxfamily.org/svnroot/GROUPE/REPOSITORY -m "Import initial ou tout autre message qui vous chante"
L'import va recopier récursivement le contenu du répertoire directement dans le référentiel.
Si vous avez déjà des fichiers composant le projet, il vous suffit de procéder de la même façon mais de ne faire l'import qu'après avoir copié vos fichiers dans le répertoire trunk.
Après cet import, il vous faut faire un checkout du référentiel
svn co svn+ssh://USER@svn.tuxfamily.org/svnroot/GROUPE/REPOSITORY unrepertoire
unrepertoire étant le répertoire dans lequel vous allez travailler. Si tous les fichiers sont bien présent, vous pouvez supprimer le répertoire à partir duquel vous avez fait l'import et passer à la suite de ce document.
Ajout/suppression de fichiers, mise à jour du repository
Ajout de fichier
Entrons donc dans notre répertoire
cd repertoire
Et créons un fichier appelé ##file##
touch file
Ensuite, pour l'ajouter au repository, tapez simplement
svn add file
Enfin, pour envoyer le tout sur le serveur, invoquez la commande suivante :
svn ci
plus classe : svn ci --message "message de commit qui apparaîtra dans le changelog"
Pour les répertoires, nous aurions procédé de la même façon
svn add directory
puis:
svn ci
Suppression de fichier
Pour supprimer un fichier présent dans le repository, tapez simplement
svn rm file
puis envoyez vos modifications sur le serveur
svn ci
Mise à jour du repository
Quand on travaille en groupe, il peut être utile de pouvoir mettre à jour son dépot subversion. Pour cela, il suffit d'invoquer la commande suivante à la base du repository
svn up
Utilisation de Subversion en anonymous
Il est possible d'utiliser Subversion en anonyme. Cependant, vous n'aurez pas le droit de modifier le repository (suppression ou modification de fichiers). Pour faire un 'checkout' du repository, invoquez la commande suivante :
svn co svn://svn.tuxfamily.org/svnroot/VOTREPROJET/NOMDUREPOSITORY
Il est également possible de mettre à jour le repository au fur et à mesure que les développeurs mettent à jour le code via un simple
svn up
Attention cependant, le mode anonyme n'est disponible que si votre repository est mis en public (réglage par défaut)
Utilisation du Svnweb
Vous pouvez consulter les repositories par le web à l'adresse suivante : [[1]]. Les repositories sont présentés et les projets auxquels ils appartiennent sont entre parenthèses.
Obtenir des nouvelles régulières sur votre repository
Il est possible d'avoir des informations régulières à propos de votre repository. Il suffit pour cela d'utiliser le feed RSS placé sur le [svnweb] de votre repository. Par exemple, pour avoir les news régulières du repository sodrepo, utilisez le fichier XML suivant : http://svnweb.tuxfamily.org/rss.php?repname=sodrepo+%28sodgroup%29&path=%2F&rev=0&sc=0&isdir=1
Chaque repository dispose d'un feed RSS, il vous suffit donc de l'utiliser.
Utilisation d'une interface graphique
eSVN
Si vous êtes allergiques à la ligne de commande pourtant fort pratique, vous pouvez utiliser eSVN jusqu'à ce que le support de svn soit correctement opérationnel dans cervisia (qui vous sert peut-être déjà pour cvs).
Si vous utilisez la plateforme de developpement [Eclipse], il est possible d'utiliser subclipse un greffon disponible sur http://subclipse.tigris.org/
Peut-être y-aura-t-il tortoiseSVN disponible pour GNU/Linux un jour ? Pour windows, voici quelques tutoriels permettant de configurer l'utilisation d'une clé SSH avec tortoisePlink (version adaptée à tortoiseSVN de l'outil plink.exe en ligne de commande du célèbre putty)
- http://www.logemann.org/day/archives/000099.html - http://tortoisesvn.sourceforge.net/docs/release/TortoiseSVN_en/ch05s25.html
Configurer Eclipse
Pour ajouter le support de [subversion] à [Eclipse] il faut installer le plug-in [SubClipse]. Pour installer ""SubClipse"" voir sur ce site http://www.think-underground.com/index.php/2006/01/30/162-monter-un-serveur-svn-subversion-et-y-acceder-depuis-eclipse. Par défaut ""SubClipse"" n'est pas paramétré pour gérer la connexion ssh. Pour l'activer, il faut lancer Eclipse, aller dans le menu "Window / Preference". Dans la liste, dérouler "Team" puis choisir "SVN". Dans la partie droite "SVN Interface", sélectionner ""JavaSVN (PureJava)"" au lieu de ""JavaHL (JNI)"". Maintenant vous pouvez reparamétrer la connexion au svn en utilisant
svn+ssh://VOTREUSER@svn.tuxfamily.org/svnroot/VOTREPROJET/NOMDUREPOSITORY
Déposer votre clé SSH
Configurer SSH
Vous devez tout d'abord générer votre clef ssh, pour ce faire, ouvrez une console et tapez :
$ ssh-keygen -t rsa
Une "passphrase" vous sera demandée. Une fois entrée, votre clef ssh est prète a être utilisée. Avant tout, il faut créer un fichier nommé "ssh_keys" qui contiendra le contenu de la clef publique générée. Faisons ainsi:
$ cat ~/.ssh/id_rsa.pub >> ~/ssh_keys $ chmod 700 ~/ssh_keys
Il faut maintenant les envoyer sur le serveur distant, en l'occurrence votre FTP Tuxfamily. Ouvrez un client FTP et allez sur votre compte, vous allez voir vos différents projets en cours, c'est à dire vos espaces Web. Restez a la base et copiez le fichier ssh_keys à l'intérieur.
Upload de la clef
Il est possible de déposer votre clé SSH (publique) sur les serveurs de Tuxfamily. Cela vous permet de ne pas taper votre mot de passe à chaque opération effectuée sur le serveur Subversion.
- Pour la déposer, il faut copier le contenu de votre clé publique dans le fichier ##ssh_keys## (le créer si besoin) qui est placé dans votre répertoire de départ (répertoire home). Ce répertoire home est celui sur lequel vous arrivez lorsque vous vous identifiez sur le serveur FTP.
- Ce fichier doit être placé et avoir un chmod de 700 (faire le chmod 700 à l'aide du client ftp).
Autrement dit, seul VOUS, utilisateur, avez le droit de lire, d'écrire et d'exécuter ce fichier.
Votre clé publique ssh est dans ~/.ssh/id_rsa.pub ou id_dsa.pub (si vous avez retenu un mode faiblard d'encryption)
Utilisation
Désormais il ne reste plus qu'à lancer une session SSH sur votre machine. Ceci se résume en 2 commandes. Tout d'abord (au cas où) il faut "killer" tous les processus ssh-agent si vous en avez lancé un. Sachez qu'il faut toujours verifier que aucun autre agent ssh soit lancé car Gnome et d'autres environnements lancent un agent.
$killall ssh-agent
Puis nous allons lancer les 2 commandes qui vont permettre à votre machine de communiquer avec SVN via SSH.
$ ssh-agent $SHELL $ ssh-add ~/.ssh/id_rsa
Si tout s'est bien passé, vous n'aurez pas à taper votre mot de passe à chaque commande SVN que vous ferez par la suite. A chaque fois que vous voudrez utiliser cvs, il faudra ouvrir une session SSH:
$ ssh-agent $SHELL $ ssh-add ~/.ssh/id_rsa
Et toute les commandes SVN devront être tapées dans le même SHELL.
Pour éviter de devoir ouvrir une session à la main à chaque session, ajoutez ces lignes dans le fichier .bashrc :
if [ -f .ssh-agent ] then
. .ssh-agent
else
killall ssh-agent ssh-agent > .ssh-agent ssh-add ~/.ssh/id_rsa
fi
Note : Vous pouvez utiliser KeyChain http://www.gentoo.org/proj/en/keychain pour garder en mémoire votre passphrase et le ssh-agent.
IMPORTANT: Notez bien votre passphrase, elle vous sera demandée lors du login de votre bash.
Développement collaboratif, droits d'écriture
Tous les utilisateurs du groupe auront la permission d'écrire sur le SVN. Autrement dit, si vous désirez développer à plusieurs sur un même repository, il est conseillé d'ajouter les développeurs au groupe via le panel. Toutefois, il faut que les développeurs se créent un compte sur le panel au préalable.
Un projet correspond à un groupe (au sens Unix du terme), il faut ajouter vos co-développeurs à votre projet pour qu'ils puissent commiter des modifications au dépôt subversion (ils auront aussi accès à l'arborescence, permettant de maintenir l'intégralité du projet collaborativement).
Autrement, vous risquez d'obtenir le message suivant :
Transmission des données .svn: Échec de la propagation (commit), détails : svn: Can't create directory '/svnroot/votreprojet/votrerepository/db/transactions/7-1.txn': Permission denied
Remarques diverses
- Il est conseillé de ne commiter que des éléments qui compilent correctement (mais qui ne fonctionnent pas forcément) afin que le trunk puisse être testé n'importe quand par de nouveaux utilisateurs.
- Vous devez choisir les fichiers à versionner, il n'est pas exemple pas nécessaire d'archiver des fichiers de backup (faites attention aux éditeurs qui créent des copies en xxx~, ces copies ne doivent pas être versionnées) ni les fichiers issus directement de la compilation des sources. Pour cela, subversion propose la propriété svn:ignore (http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.advanced.props).
- Evitez de prendre un nom générique comme "svn" ou "subversion". Utilisez plutot un nom en rapport avec votre projet ou même, prenez le nom de votre projet ...
Liens utiles
- http://svnbook.red-bean.com
- http://www.pushok.com/soft_svn_vscvs.php (pourquoi subversion plutôt que cvs ? )
- http://subversion.tigris.org (site de référence)
- https://svnhost.gi.polymtl.ca/utilisationSVN.html (idem en Franćais)
- http://svnbook.red-bean.com/en/1.1/index.html (le SVNbook)
- http://www.cs.put.poznan.pl/csobaniec/Papers/svn-refcard.pdf (référence)
- http://www.abbeyworkshop.com/howto/misc/svn01/ (résumé du SVNBook)
- https://forge.ipsl.jussieu.fr/docipsl/wiki (présentation de SVN)