Launchpad, SVN, CVS et Git : gérer et versionner ses développements de logiciels ou de documentation (même les cours).
Launchpad est une forge logicielle développée et maintenue par Canonical.
C'est une application web qui procure une aide au développement de logiciels libres. Elle utilise Bazaar (bzr) comme système de gestion de versions. C'est analogue à d'autres systèmes commme CVS ou subversion.
SSH est, grosso modo, un telnet (très) amélioré et sécurisé. Cela permet de se connecter de façon sécurisée à des machines distantes.
Dans tous les cas, afin de pouvoir mettre des fichiers sur Launchpad, il vous faut y enregistrer une clé publique de cryptage pour SSH. C'est expliqué sur votre profil Launchpad. Voici brièvement :
On installe un client SSH
sudo apt-get install openssh-client
On génère une paire de clés publique/privé, répondez aux questions selon vos convenances (passphrase conseillée)
ssh-keygen -t rsa
Votre clé publique est dans .ssh/id_rsa.pub Il faut la communiquer à launchpad afin qu'il vous authentifie de façon sécurisée. Pour cela, aller dans votre profil sur launchpad et chercher “SSH key”. Dans le cadre “Import key”, copier/coller le contenu de id_rsa.pub et Valider.
Installer le client bzr :
sudo apt-get install bzr
bzr whoami "Prénom Nom <mon_mail@domaine.fr>" # On donne son identité à bzr bzr init # Initialisation (à faire une seule fois) bzr branch lp:sadms # On récupère tout le code source de la branche principale
Il se peut que le message suivant s'affiche : You have not informed bzr of your Launchpad ID, and you must do this to write to Launchpad or access private data. See “bzr help launchpad-login”. Branched 9 revision(s). Cela signifie tout simplement que vous n'êtes pas authentifié sur launchpad et que vous ne pourrez donc pas uploader vos modifications sur celui-ci.
Seuls les membres de sadms peuvent uploader sur la branche lp:sadms. Les autres peuvent tout à fait uploader vers leur propre branche (lp:mon_nom). On pourra toujours fusionner les deux par la suite.
bzr launchpad-login Launchpad_ID #on s'identifie en tant qu'utulisateur Launchpad
bzr init bzr add nom_fichier #ajoute des fichiers créées localement devant être versionnés bzr commit -m 'un commentaire clair et bref' #enregistre les modifications dans le gestionnaire de version bzr push lp:adresse_sur_lp #uploade tout le travail sur la branche LP
Installer le client bzr et bzr-explorer
sudo apt-get install bzr bzr-explorer
Exemple avec la récupération du code se sadms sur SF
Ouvrir un session sur le CVS de SF (pas de mot de passe, donc presser sur entrée) :
cvs -d:pserver:anonymous@sadms.cvs.sourceforge.net:/cvsroot/sadms login
Télécharger le code source :
cvs -z3 -d:pserver:anonymous@sadms.cvs.sourceforge.net:/cvsroot/sadms co -P sadms
Git est un logiciel de gestion de versions décentralisé. Créé par Linus Torvalds, le créateur du noyau Linux, il est distribué selon les termes de la licence GNU/GPL version 2.
Nous utilisons ici GitHub. C'est un service web d'hébergement et de gestion de développement de logiciels, utilisant le programme Git. GitHub propose des comptes professionnels payants, ainsi que des comptes gratuits pour les projets de logiciels libres.
Nous allons ici récupérer le code d'un dépôt, le modifier et le mettre dans le gestionnaire de version.
Pour la configuration initiale de git avec github, voir ici : http://help.github.com/linux-set-up-git/ (il existe des versions pour Windows ou Mac)
Nous allons créer un répertoire local de travail, initialiser git :
mkdir nom_depot cd nom_depot git init
On récupère le code source du projet qui nous intéresse sur github :
git clone git://github.com/rboulle/cmirem.git
Une fois les fichiers modifiés, ou d'autres créées, vous souhaitez les envoyer dans le gestionnaire de versions sur github. Pour cela vous devez en avoir le droit (voir avec le responsable du projet afin qu'il vous ajoute sur github en tant que contributeur).
D'abord vous devez faire un “commit” en local avant d'envoyer les modifications sur le serveur. La commande suivant commite tout ce qui a été modifié (inutile de faire 'commit add' avant)
git commit -a -m 'un message indiquant en une ligne ce qui a été fait'
On ajoute un alias pour le dépôt distant puis on pousse (push) les modifications :
git remote add github git@github.com:rboulle/cmirem.git git push github master
Subversion (en abrégé svn) est un logiciel de gestion de versions, distribué sous licence Apache et BSD. Il a été conçu pour remplacer CVS. Ses auteurs s'appuient volontairement sur les mêmes concepts. Plus d'informations sur : http://fr.wikipedia.org/wiki/Apache_Subversion
SVN permet de gérer son code sources et de développer à plusieurs. Vous trouverez dans cette section deux parties : mise en place du serveur et utilisation à l'aide d'un client
Travail effectué sous Débian 6.0 (transposable à Ubuntu)
Installation des paquets nécessaires
aptitude install subversion apache2 libapache2-svn
Configuration d'apache
vim /etc/apache2/mods-enabled/dav_svn.conf
<Location /projet>
Dav svn
SVNPath /var/svn/projet1
Ajouter les restrictions pour l'ecriture
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
Enregistrer, puis relancer apache
/etc/init.d/apache2 restart
Création d'un répertoire pour le projet
mkdir -p /var/svn/projet1 svnadmin create /var/svn/projet1/ chown -Rf www-data:www-data /var/svn/projet1/
Création d'un fichier pour l'identification des utilisateurs (création de l'utilisateur lapin)
htpasswd -cs /etc/apache2/dav_svn.passwd lapin chown -Rf www-data:www-data /etc/apache2/dav_svn.passwd
pour ajouter un utilisateur par la suite
htpasswd -s /etc/apache2/dav_svn.passwd lapin2
On relance apache :
/etc/init.d/apache2 restart
Le svn est accessible en lecture pour tous en http://monserveur/projet
Pour l'écriture, voir la suite .
Côté client:
Récupération svn co http://192.168.0.1/projet copielocale
mise a jour: 1) Entrer a la racine du projet (ici copie locale) 2) taper svn update
Ajouter un fichier au depot:
svn add fichier ou répertoire
ou si tout votre projet est dans le répertoire trunk (nom usuel), faire dans le répertoire parent de trunk :
svn add trunk/*
faire un commit :
svn --username lapin commit -m "ajout et modifs"
Mettre à jour votre dépôt local à partir du dépôt SVN :
svn update
On trouve pas mal d'informations intéressantes sur ce site