Subversion (SVN) est un système de gestion de versions, c’est à dire qu’il permet à une ou plusieurs personnes de travailler sur un projet sans avoir à faire 150 fichiers de type "mon_article_v1_11_12_2006_16h_35min_42s_42.tex"
La tache principale de svn est de faire une base de données et de gérer les modifications des fichiers sur cette base. On peut mettre cette base sur son ordinateur personnel (très pratique lorsque l’on travaille sur un petit programme ou un petit document), sur une clef USB (quand on veut travailler avec plusieurs ordinateurs non connectés au net) ou sur un serveur. C’est ce dernier point qui nous intéresse.
Pour travailler sur un serveur distant, 3 techniques sont utilisables :
Les 2 premières techniques nécessitent d’avoir une autorisation préalable de notre administrateur système (qui doit faire quelques configurations). Ce sont ces techniques qu’il faut utiliser si l’on veut travailler à plusieurs (il y a aussi une astuce pour utiliser la 3ème, mais qui nécessite un espace commun comme une zone echange).
Ici, je veux faire une petite base de données svn pour utiliser sur mes ordi perso (labo ou internet). Je peux me connecter sur le serveur du labo par ssh et je peux faire une authentification RSA.
Premier essai
Je me connecte par ssh et je fais :
#cd mon_sous_dossier
#/usr/local/subversion/bin/svnadmin create mon_dossier_svn
On notera que svnadmin n’est pas situé dans un endroit où on peux l’appeler directement. Cela n’est généralement pas vrai sur un serveur debian, mais ça l’est sur d’autres distributions.
Je retourne sur mon ordinateur où j’ai commencé par faire mon dossier de travail "dossier_pl" et j’ai :
#svn import dossier_pl/
#svn co svn+ssh ://moi@serveur_labo/mon_sous_dossier/mon _dossier_svn
bash :line 1 : svnserve : command not found.
svn : connexion fermée de manière innatendue
Et oui, svnserve n’est pas à la bonne place dans la distribution. On recherche un peu dans la littérature et on trouve la technique à ne pas faire :
Très simple, la technique à ne pas faire pour passer par ssh :
C’est vrai, on délogge, et on fait tout ce que l’on veut avec subversion. Mais un petit ssh normal vers la machine montre qu’il est impossible de faire autre chose que svnserve.
On va commencer par générer un nouveau système clef publique, clef privée que l’on va mettre dans un nouveau dossier ".svnssh" (on est toujours sous un type d’unix (linux...)).
Attention : faire attention à ne pas overwriter vos anciennes clefs On créé notre nouvelles clef :
#ssh-keygen -t dsa
Et le programme nous demande le fichier de sortie /home/chezouam/.svnssh/id_dsa puis la passphrase.
Maintenant, on a une nouvelle clef publique dans .svnssh/id_dsa.pub On met cette nouvelle clef sur le serveur dans .ssh/authorized_keys avec command="/..../svnserve" comme dans la partie à ne pas faire.
En fait, nous avons créé une système de clef publique privée exprès pour ssh. Si nous n’avions pas mis la commande ’command="/.../svnserve", nous aurions pu nous logger sur le serveur en tapant ssh -i /home/chezouam/.svnssh/id_dsa moi@serveurlabo.
Pour que le système marche, il faut dire à ssh que l’on doit utiliser cette commande pour se connecter :
Pour cela, on tape dans le shell
#export SVN_SSH="ssh -i /home/chezouam/.svnssh/id_dsa"
Et normalement, ça doit marcher...