<p>CVS est un acronyme pour désigner le «<strong>Concurrent Versioning System</strong> », 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 <atarget="_top"href="http://www.sf.net/">Sourceforge</a>).</p>
<p>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 <atarget="_top"href="http://moodle.org/download">Téléchargement de Moodle</a>.</p>
<p>On vient de vous proposer un accès en écriture au CVS pour vous permettre de nous aider à développer et à maintenir Moodle ? <ahref="http://sourceforge.net/project/memberlist.php?group_id=30935">Bienvenue au club</a> !</p>
<p>Pour avoir l'autorisation d'écrire dans l'<atarget="_top"href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/moodle/moodle/">archive CVS de Moodle</a>, il vous faut avant tout un compte sur Sourceforge (<ahref="http://sourceforge.net/account/register.php">l'enregistrement</a> est simple et gratuit). Nous admettrons pour les exemples de ce texte que votre nom d'utilisateur chez Sourceforge est <strong><fontcolor="#990000">myusername</font></strong> et que votre mot de passe est <strong><fontcolor="#990000">mypassword</font></strong>. Lisez attentivement les instructions de Sourceforge (en anglais) pour <atarget="_top"href="http://sourceforge.net/docman/display_doc.php?docid=768&group_id=1#develhomedir">créer votre dossier CVS initial</a> (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.</p>
<p>Dès que votre compte Sourceforge est actif, contactez <atarget="_top"href="http://moodle.org/user/view.php?id=1&course=1">Martin Dougiamas</a> pour qu'il puisse vous donner les droits en écriture sur certains dossiers de Moodle.</p>
<p>Pour éviter de devoir taper <strong><fontcolor="#990000">mypassword</font></strong> chaque fois que vous lancez une commande CVS, suivez les <atarget="_top"href="http://sourceforge.net/account/editsshkeys.php">instructions de Sourceforge pour l'utilisation de clefs d'autorisation</a> (en anglais). Cette étape n'est pas obligatoire, mais elle rend votre travail avec CVS bien plus agréable et productive.</p>
<p>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.</p>
<p>Dans le jargon de CVS, les « Module » sont des collections séparées de code. Moodle possède les modules suivants :</p>
<p>La plupart des développeurs travaillent sur des fonctionnalités existantes dans le module <strong>moodle</strong>, mais beaucoup proposent aussi de nouvelles idées dans le module <strong>contrib</strong>. Lorsque du code atteint un certain niveau de maturité dans la zone <strong>contrib</strong>, il peut être déplacé dans le module principal <strong>moodle</strong>.</p>
<p>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 :</p>
<p>Ne tentez pas de lancer cette première commande CVS dans une installation de Moodle préexistante. Commencez avec un nouveau dossier vide.</p>
<p>Vous devrez taper <strong><fontcolor="#990000">mypassword</font></strong> pour chaque commande, à moins que vous ne mettiez en place des <atarget="_top"href="http://sourceforge.net/account/editsshkeys.php">clefs autorisées</a>.</p>
<p>À 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 :</p>
<p>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 :</p>
<p>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 !</p>
<p>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 :</p>
<li>Téléchargez TortoiseCVS depuis le site <atarget="_top"href="http://www.tortoisecvs.org/">tortoisecvs.org</a> et installez-le, puis redémarrez votre machine.</li>
<li>Cliquez sur ce dossier avec le bouton droit de la souris et sélectionnez dans le menu l'option « <strong>CVS Checkout</strong> ». Une boîte de dialogue s'affiche alors.</li>
<li>Sous le champ « Module », tapez « <strong>moodle</strong> » pour obtenir la dernière version de développement de Moodle, « <strong>contrib</strong> » pour obtenir le dossier des contributions et « <strong>mysql</strong> » pour obtenir le module MySQL Admin.</li>
<p>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 :</p>
<li>Cliquez avec le bouton droit de la souris sur votre dossier Moodle (ou sur n'importe quel fichier) et sélectionnez « <strong>CVS Update</strong> ».</li>
<li>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.</li>
<p>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 :</p>
<li>Cliquez avec le bouton droit de la souris sur votre dossier Moodle (ou sur n'importe quel fichier) et sélectionnez « <strong>CVS Commit...</strong> ».</li>
<p>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) :</p>
<li>Les balises et les noms des branches doivent TOUJOURS être appliqués sur <strong>l'intégralité du module</strong> (la totalité de Moodle). N'appliquez pas de balises à des fichiers individuels ou à des dossiers.</li>
<li>Il n'est pas autorisé de changer le nom des balises, car des développeurs comptent dessus ! Tapez-les donc correctement du premier coup.</li>
<p>Dans le jargon CVS, le <strong>tronc</strong> (trunk) est la version principale en développement de Moodle. Elle est aussi appelée <spanclass="style4">HEAD</span>, ou encore branche par défaut.</p>
<p>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.</p>
<p>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 <spanclass="style1">MOODLE_XX_STABLE</span> est créée pour la nouvelle version.</p>
<p>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.</p>
<p>Dès que la branche stable <spanclass="style3">MOODLE_XX_STABLE</span> 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 <spanclass="style1"><strong>STABLE</strong></span> actuelle et corrigent les bogues qui y sont découverts.</p>
<p>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 :</p>
<p>À la suite de cela, toutes les commandes décrites ci-dessus s'appliqueront à la version stable. Pour revenir au tronc, tapez simplement :</p>
<p>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 <strong>MOODLE_XXX</strong>.</p>
<p>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 :</p>
<li>Lire attentivement les historiques (logs) à la recherche d'éventuels conflits et corriger tous les fichiers concernés par ces conflits ;</li>
<li>Mettre à jour la balise mobile d'incorporation afin que la procédure puisse être répétée la prochaine fois :<br/><br/>
<p>Enfin, les valeurs des variables <strong>$version</strong> 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.</p>
<p>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.</p>
<p>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 <spanclass="style1"><strong>MOODLE_14_WIDGET</strong></span> peut être vu sur le diagramme ci-dessus.</p>
<li>Créez une nouvelle balise sur le <strong>tronc</strong> (pour la totalité de moodle) avec le nom <strong>MOODLE_XX_WIDGET_PRE</strong><br/><br/>
<li>Travaillez dans cette branche jusqu'à ce que la fonctionnalité soit raisonnablement stable. Copiez vos fichiers dans le CVS suivant vos besoins.<br/><br/>
<li>Lorsque vous êtes prêt, incorporez toute la branche dans le tronc : copiez tous ses fichiers dans le tronc et abandonnez la branche.<br/><br/>