# CVS pour les développeurs de Moodle

> CVS est un acronyme pour désigner le « Concurrent Versioning System », une façon pratique et très répandue de stoquer le code source de projets informatiques. Un CVS conserve toutes les versions de tous les fichiers, de sorte qu'aucune donnée n'est jamais perdue, et que les traces de l'utilisation par les différentes personnes sont conservées. Le système offre en outre la possibilité de fusionner le code si plusieurs personnes travaillent sur un même fichier. Tout le code et toutes les versions sont enregistrées sur un serveur central (dans le cas de Moodle, sur Sourceforge).

> Si vous désirez simplement télécharger par CVS la version actuelle de Moodle pour lancer un site, vous n'avez pas besoin de cette page. Il vous suffit de suivre les instructions (plus simples) pour télécharger Moodle par CVS sur la page Téléchargement de Moodle.

> ## Thèmes de ce document

> 1. Rejoindre le projet en tant que développeur
> 2. Modules CVS
> 3. Commandes CVS de base
>    3.1. CVS sur Unix ou Mac OS X
>    3.2. CVS sous Windows
> 4. Travailler avec des branches
>    4.1. Développement du tronc
>    4.2. Branches stables pour chaque version
>    4.3. Branches particulières pour tout changement important

> ## 1. Rejoindre le projet en tant que développeur

> > On vient de vous proposer un accès en écriture au CVS pour vous permettre de nous aider à développer et à maintenir Moodle ? Bienvenue au club !

> > Pour avoir l'autorisation d'écrire dans l'archive CVS de Moodle, il vous faut avant tout un compte sur Sourceforge (l'enregistrement est simple et gratuit). Nous admettrons pour les exemples de ce texte que votre nom d'utilisateur chez Sourceforge est myusername et que votre mot de passe est mypassword. Lisez attentivement les instructions de Sourceforge (en anglais) pour créer votre dossier CVS initial (home directory) — une procédure que vous devez faire pour chaque nouveau dossier en vue de l'utiliser avec le CVS. Il s'agit simplement de vous connecter à l'adresse cvs.sourceforge.net via le protocole SSH.

> > Dès que votre compte Sourceforge est actif, contactez Martin Dougiamas pour qu'il puisse vous donner les droits en écriture sur certains dossiers de Moodle.

> > Pour éviter de devoir taper mypassword chaque fois que vous lancez une commande CVS, suivez les instructions de Sourceforge pour l'utilisation de clefs d'autorisation (en anglais). Cette étape n'est pas obligatoire, mais elle rend votre travail avec CVS bien plus agréable et productive.

> > Une fois cela fait, vous devriez avoir toutes les autorisations nécessaires, et vous pouvez configurer votre machine et télécharger les sources actuelles pour y travailler.

> ## 2. Modules CVS

> > Dans le jargon de CVS, les « Module » sont des collections séparées de code. Moodle possède les modules suivants :

> > > moodle : le code source pricipal de Moodle

> > > contrib : les contributions d'utilisateurs et du code en développement

> > > mysql : un phpMyAdmin adapté pour l'administration de la base de données dans Moodle

> > > windows-cron : un petit programme rendant possible l'exécution de crons sous Windows

> > > docs : diverses documentations supplémentaires mises à disposition par des utilisateurs

> > La plupart des développeurs travaillent sur des fonctionnalités existantes dans le module moodle, mais beaucoup proposent aussi de nouvelles idées dans le module contrib. Lorsque du code atteint un certain niveau de maturité dans la zone contrib, il peut être déplacé dans le module principal moodle.

> ## 3. Commandes CVS de base

> > ### 3.1 CVS sur Unix ou Mac OS X

> > > Le CVS de Sourceforge utilise SSH comme couche de transport pour la sécurité. Vous devrez donc configurer la variable d'environnement CVS_RSH dans votre « shell » comme ci-dessous. Le mieux est de placer cette commande dans votre .bashrc ou .cshrc afin que vous n'ayez pas à la retaper tout le temps :

> > > setenv CVS_RSH ssh (pour csh, tcsh, etc.)
> > > export CVS_RSH=ssh (pour sh, bash, etc.)

> > > Ensuite, vous devrez effectuer un « check out » de Moodle avec la commande ci-dessous (sur une seule ligne) :

> > > cvs -z3 -d:ext:myusername@cvs.sourceforge.net:/cvsroot/moodle co moodle

> > > La commande est similaire pour d'autres modules :

> > > cvs -z3 -d:ext:myusername@cvs.sourceforge.net:/cvsroot/moodle co contrib

> > > Ne tentez pas de lancer cette première commande CVS dans une installation de Moodle préexistante. Commencez avec un nouveau dossier vide.

> > > Vous devrez taper mypassword pour chaque commande, à moins que vous ne mettiez en place des clefs autorisées.

> > > À ce stade, vous devriez avoir un nouveau dossier « moodle ». Vous pouvez changer son nom et le déplacer à votre convenance. Placez-vous dans ce dossier :

> > > cd moodle

> > > Les toutes dernières versions des fichiers de Moodle devrait y être. Vous pouvez mainteannt modifier les fichiers de votre copie. Pour comparer vos fichiers avec ceux du serveur CVS, utilisez la commande cvs diff, par exemple :

> > > cvs diff -c config-dist.php
> > > cvs diff -c lang

> > > Pour récupérer les dernières mises à jour de Moodle, tapez :

> > > cvs update -dP

> > > Pour transférer vos nouveaux fichiers sur le serveur, vous devrez taper quelque chose comme :

> > > cd lang/fr
> > > cvs commit

> > > Vous devrez taper un commentaire. Votre éditeur de texte s'ouvrira. Écrivez quelque chose qui ait un sens et fermer l'éditeur de texte. Les fichiers seront envoyés chez Sourceforge et enregistrés. C'est tout !

> > > Pour vous économiser du temps, vous pouvez placer les arguments par défaut dans un fichier appelé .cvsrc dans votre dossier de départ. Par exemple, le mien contient :

> > > diff -c
> > > update -dP

> > > Taper « cvs help » pour plus de détails ...

> > ### 3.2 CVS sous Windows

> > > Pour commencer, il vous faut télécharger une copie complète de Moodle avec votre compte développeur.

> > 1. Téléchargez TortoiseCVS depuis le site tortoisecvs.org et installez-le, puis redémarrez votre machine.
> > 2. Trouvez ou créez un nouveau dossier dans lequel vous allez télécharger Moodle.
> > 3. Cliquez sur ce dossier avec le bouton droit de la souris et sélectionnez dans le menu l'option « CVS Checkout ». Une boîte de dialogue s'affiche alors.
> > 4. Copiez le texte ci-dessous dans le champ CVSROOT (en y plaçant votre nom d'utilisateur !) :
> >    :ext:myusername@cvs.sourceforge.net:/cvsroot/moodle
> > 5. Sous le champ « Module », tapez « moodle » pour obtenir la dernière version de développement de Moodle, « contrib » pour obtenir le dossier des contributions et « mysql » pour obtenir le module MySQL Admin.
> > 6. Cliquez sur le bouton « OK » tout sera alors téléchargé.

> > > Une boîte de dialogue affichera tous les fichiers en cours de téléchargement, et après quelques instants vous aurez votre copie complète de Moodle. Après ce premier « check out », vous pourrez récupérer les derniers fichiers modifiés sur le serveur CVS :

> > 1. Cliquez avec le bouton droit de la souris sur votre dossier Moodle (ou sur n'importe quel fichier) et sélectionnez « CVS Update ».
> > 2. Attendez et voyez défiler les historiques (logs). Prenez note des conflits pouvant survenir si votre code local a des modifications en contradiction avec les versions téléchargées. Vous aurez à résoudre manuellement ces fichiers en les modifiant.

> > > Après une modification de fichiers (vous remarquerez que la couleur de leur icône passe alors du vert au rouge), vous pouvez les envoyer sur le serveur CVS de la façon suivante :

> > 1. Cliquez avec le bouton droit de la souris sur votre dossier Moodle (ou sur n'importe quel fichier) et sélectionnez « CVS Commit... ».
> > 2. Dans la boîte de dialogue, taper une description claire des changements que vous avez effectués.
> > 3. Cliquez « OK ». Vos modifications sont alors envoyées vers le serveur CVS.

> ## 4. Travailler avec des branches

> > Le diagramme suivant montre comment le module principal moodle se ramifie en plusieurs versions (branches) au cours du temps.

> > Pour voir toutes les balises et branches actuellement disponibles, utilisez la commande suivante sur n'importe quel fichier suffisamment ancien (par exemple index.php dans le dossier principal de moodle) :

> > cvs status -v index.php

> > Quelques recommandations au sujet des balises :

> > - Les balises et les noms des branches doivent toujours être en lettres capitales.
> > - Les balises et les noms des branches doivent TOUJOURS être appliqués sur l'intégralité du module (la totalité de Moodle). N'appliquez pas de balises à des fichiers individuels ou à des dossiers.
> > - Il n'est pas autorisé de changer le nom des balises, car des développeurs comptent dessus ! Tapez-les donc correctement du premier coup.

> > ### 4.1 Développement du tronc

> > > Dans le jargon CVS, le tronc (trunk) est la version principale en développement de Moodle. Elle est aussi appelée HEAD, ou encore branche par défaut.

> > > Les développeurs de Moodle font en sorte que le tronc reste aussi stable que possible, mais il contient d'habitude du nouveau code, avec des bogues et de petites instabilités.

> > > De temps à autre, nous décidons que le produit possède suffisamment de fonctionnalités pour sortir une version. Le tronc reçoit alors une balise MOODLE_XX_BETA (pour le cas où l'on devrait revenir à ce point) et une nouvelle branche du nom de MOODLE_XX_STABLE est créée pour la nouvelle version.

> > > Une version bêta est aussi publiée à ce point. Elle est destinée aux testeurs qui n'utilisent pas CVS mais désirent essayer les dernières fonctionnalités et en rapporter les bogues.

> > ### 4.2 Branches stables pour chaque version

> > > Dès que la branche stable MOODLE_XX_STABLE est créée, les efforts de développement se divisent temporairement en deux. Certains développeurs continuent à travailler sur de nouvelles fonctionnalités du tronc pour les prochaines versions, mais la plupart d'entre eux se concentrent sur la branche STABLE actuelle et corrigent les bogues qui y sont découverts.

> > > Vous pouvez faire en sorte que votre copie locale de Moodle soit en synchronisation avec la version STABLE en tapant la commande unix suivante depuis le dossier principal de Moodle :

> > > cvs update -dP -r MOODLE_XX_STABLE

> > > À la suite de cela, toutes les commandes décrites ci-dessus s'appliqueront à la version stable. Pour revenir au tronc, tapez simplement :

> > > cvs update -dPA

> > > Sous Windows, un menu devrait être disponible où vous pouvez choisir la branche.

> > > Lorsque la nouvelle branche STABLE se stabilise véritablement, une version est publiée. Les fichiers compressés sont créés pour la distribution et la branche reçoit de Martin une balise du nom de MOODLE_XXX.

> > > Périodiquement, les corrections de bogues de la branche STABLE doivent être incorporées dans le tronc afin qu'elles soient aussi disponibles dans les futures versions de Moodle. Une balise mobile appelée MOODLE_XX_MERGED sera maintenue pour garder une trace de la dernière incorporation. La procédure pour une telle incorporation se passe ainsi :

> > > 1. Télécharger la toute dernière version du tronc :
> > >    cvs update -dPA
> > > 2. Incorporer dans le tronc toutes les modifications de la branche effectuées depuis la dernière incorporation :
> > >    cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE
> > > 3. Lire attentivement les historiques (logs) à la recherche d'éventuels conflits et corriger tous les fichiers concernés par ces conflits ;
> > > 4. Appliquer la copie modifiée dans le tronc du CVS :
> > >    cvs commit
> > > 5. Revenir à la branche stable ;
> > >    cvs update -dPr MOODLE_XX_STABLE
> > > 6. Mettre à jour la balise mobile d'incorporation afin que la procédure puisse être répétée la prochaine fois :
> > >    cvs tag -RF MOODLE_XX_MERGED

> > > Enfin, les valeurs des variables $version de tous les fichiers « version.php » de Moodle de la branche stable ne doivent pas être mis à jour si possible (à part le dernier chiffre si nécessaire). La raison en est que si quelqu'un fait une mise à jour d'une version très stable à la version très stable suivante, il pourrait sans cela manquer une mise à jour arrivée sur le tronc.

> > ### 4.3 Branches particulières pour tout changement important

> > > Occasionnellement, il est nécessaire d'incorporer une nouvelle fonctionnalité afin que plusieurs développeurs puissent y travailler ensemble, même si elle est encore trop instable pour être incorporée dans le tronc.

> > > Dans ces cas, une branche temporaire est créée pour travailler sur la fonctionnalité, puis incorporée au tronc principal dès que possible. Un exemple de branche appelée MOODLE_14_WIDGET peut être vu sur le diagramme ci-dessus.

> > > Si vous avez besoin de cela pour votre fonctionnalité WIDGET, suivez ces instructions :

> > > 1. Discutez avec les autres développeurs pour vous assurer que c'est vraiment nécessaire !
> > > 2. Créez une nouvelle balise sur le tronc (pour la totalité de moodle) avec le nom MOODLE_XX_WIDGET_PRE
> > >    cvs tag -R MOODLE_XX_WIDGET_PRE
> > > 3. Créez votre nouvelle branche avec le nom MOODLE_XX_WIDGET
> > >    cvs tag -Rb MOODLE_XX_WIDGET
> > > 4. Travaillez dans cette branche jusqu'à ce que la fonctionnalité soit raisonnablement stable. Copiez vos fichiers dans le CVS suivant vos besoins.
> > >    cvs commit
> > > 5. Lorsque vous êtes prêt, incorporez toute la branche dans le tronc : copiez tous ses fichiers dans le tronc et abandonnez la branche.
> > >    cvs update -dPA
> > >    cvs update -kk -j MOODLE_XX_WIDGET
> > >    cvs commit

> Bonne chance, soyez prudent et amusez-vous bien !

Documentation Moodle

Version: $Id$