Groupe d'Utilisateurs de Logiciels Libres
de Nancy et ses environs

MirabellugWiki

SvnLug

PagePrincipale :: DerniersChangements :: ParametresUtilisateur :: Vous êtes ec2-54-242-233-11.compute-1.amazonaws.com

Inscription


Pour vous inscrire sur le serveur svn du mirabellug, il va falloir contacter DelTree (Eric@Deplagne.name) en fournissant:
  • Nom, Prénom, Pseudo (Le pseudo n'est pas totalement obligatoire, mais fort pratique et conseillé, profitez-en pour nous rejoindre aussi sur irc (irc.freenode.net, #mirabellug))
  • Adresse mail
  • clef publique ssh (voir ci-dessous) -> fichier ~/.ssh/id_rsa.pub en pièce jointe
  • login souhaité (8 caractères max, basé sur le nom ou le pseudo, premier arrivé premier servi en cas de collision)

Vous serez inscrits sur deux listes de diffusion:
  • annonces@svn.mirabellug.org, utilisée pour communiquer des informations concernant le serveur.
  • mirabellug-commits@svn.mirabellug.org, liste qui reçoit un message à chaque fois qu'une modification intervient, vous pouvez demander à être désabonné de cette liste, mais je ne le conseille pas.

SSH


On va utiliser ssh pour notre connexion sécurisée au serveur svn. Je vais donc reprendre sauvagement quelques passages ciblés de la présentation ssh de BaBar, présentation qui n'est pas récente, mais toujours parfaitement valable (qui a dit pérennité du libre ?).

Création d'une paire de clefs

urba@mirabelle:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/urba/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/urba/.ssh/id_rsa.
Your public key has been saved in /home/urba/.ssh/id_rsa.pub.
The key fingerprint is:
c6:42:ce:6d:57:e3:c1:ab:85:5f:a9:58:f7:79:4c:4b urba@mirabelle

Ceci crée deux fichiers : ~/.ssh/id_rsa qui est la clef privée à conserver secrète et ~/.ssh/id_rsa.pub et qui la clef publique à installer sur les serveurs distants.

Utilisation de ssh-agent

Je conseille l'utilisation de ssh-agent pour le svn, puisque le svn se connecte parfois plusieurs fois pour une seule commande (checkout notamment), ce qui peut vite devenir pénible si on doit saisir sa passphrase à chaque fois.

Je vous laisse consulter la présentation ssh à ce sujet.

Fichier de configuration ~/.ssh/config

ssh et scp connaissent l'option -p pour se connecter à un port non standard (autre que 22), mais d'autres outils (svn notamment) n'ont pas cette capacité. Le fichier ~/.ssh/config permet (entre autres) de pallier à ce problème.

On va essayer avec le serveur svn
deplagne@cochire2:~$ ssh -p 10022 deltree@svn.mirabellug.org
( success ( 1 2 ( ANONYMOUS EXTERNAL ) ( edit-pipeline svndiff1 absent-entries ) ) )
Cette réponse étrange signifie que la commande svnserve -t est lancée automatiquement, nous n'avons pas accès en shell au serveur, c'est normal.

Mais svn ne sait pas spécifier le port 10022, en effet svn+ssh://deltree@svn.mirabellug.org:10022 ne donne rien
deplagne@cochire2:~$ svn co svn+ssh://deltree@svn.mirabellug.org:10022/var/lib/svn/mirabellug
ssh: svn.mirabellug.org:10022: Name or service not known
svn: Connexion fermée de façon inattendue

On va donc créer un fichier ~/.ssh/config
deplagne@cochire2:~$ cat .ssh/config
host svnlug
   Hostname svn.mirabellug.org
   Port 10022

Essayons d'abord avec ssh
deplagne@cochire2:~$ ssh deltree@svnlug
( success ( 1 2 ( ANONYMOUS EXTERNAL ) ( edit-pipeline svndiff1 absent-entries ) ) )
Ça semble bien.

Est-ce que svn est content ?
deplagne@cochire2:~$ svn co svn+ssh://deltree@svnlug/var/lib/svn/mirabellug
A    mirabellug/bac_a_sable
Révision 1 extraite.
C'est tout bon.

On va maintenant presque pouvoir oublier ce chemin, presque toutes les commandes svn (à l'exception notable de svn merge) iront le chercher dans les données enregistrées dans le répertoire .svn.

SVN


Je mentionnerai ici deux documentations sur svn:

On a déjà fait la première commande, le checkout (co) dans la partie ssh. Il nous reste à nous servir de toutes les autres:
deplagne@cochire2:~$ svn help
usage : svn <sous-commande> [options] [paramètres]
Client texte interactif de Subversion, version 1.4.2.
Entrer 'svn help <sous-commande>' pour l'aide sur une sous-commande.
Entrer 'svn --version' pour avoir la version et les modules d'accès (RA)
    ou 'svn --version --quiet' pour la version seule.

La plupart des sous-commandes prennent en argument des répertoires et/ou
des fichiers, et s'appliquent récursivement sur les répertoires.
Si aucun argument n'est précisé à une telle sous-commande, elle s'applique
par défaut récursivement sur le répertoire courant, qui est inclus.

Sous-commandes disponibles :
   add
   blame (praise, annotate, ann)
   cat
   checkout (co)
   cleanup
   commit (ci)
   copy (cp)
   delete (del, remove, rm)
   diff (di)
   export
   help (?, h)
   import
   info
   list (ls)
   lock
   log
   merge
   mkdir
   move (mv, rename, ren)
   propdel (pdel, pd)
   propedit (pedit, pe)
   propget (pget, pg)
   proplist (plist, pl)
   propset (pset, ps)
   resolved
   revert
   status (stat, st)
   switch (sw)
   unlock
   update (up)

Subversion est un outil pour gérer des versions.
Pour plus d'informations, voir http://subversion.tigris.org/

Pas de panique, il n'y en a pas tant que ça dont on se sert souvent, je liste ici les principales:

svn update, svn commit
récupération des modifs présentes sur le serveur, propagation des modifs locales vers le serveur.

svn status, svn diff
affichage de l'état (modifié, ajouté, supprimé, non versionné) des différents fichiers, affichage des différences entre la version actuelle et cette que vous avez reçue du serveur (pas forcément la plus récente sur le serveur).

svn cp, svn mv, svn rm
remplacement des commandes shell du même nom, pour les fichiers connus de svn.

svn add, svn revert
déclaration d'un fichier local comme devant être connu de svn, retour en arrière (effacement des modifications, suppression de l'attribut ajouté ou effacé).

svn log
affiche les différents messages fournis lors du commit, montre l'importance de fournir ces fameux messages.

svn prop*
gestion des propriétés, celles que j'ai déjà utilisées sont le type mime (utile pour dire si c'est un binaire ou non), l'attribut exécutable, et le message fourni lors du commit (propriété de révision).

svn blame
indique pour chaque ligne qui l'a modifiée en dernier, eh oui svn est un peu big brother sur les bords.

svn merge
là faut lire un peu la doc, et pratiquer, pour réconcilier différentes versions sur des branches différentes.
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]