Attention : vous consultez actuellement la documentation dédiée aux versions 1.x de Moodle. La documentation pour les versions 2.x de Moodle est consultable ici : Développement:CVS pour développeurs, celle pour les versions 3.x de Moodle est consultable ici : Développement:CVS pour développeurs et celle pour Moodle 4.x est consultable là : Développement:CVS pour développeurs.

« Développement:CVS pour développeurs » : différence entre les versions

De MoodleDocs
Aller à :navigation, rechercher
m (Catégorie)
 
(41 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{En cours de traduction}}
'''CVS''' est un acronyme pour l'expression anglaise Concurrent Versioning System. Il s'agit d'un système très répandu permettant la gestion du code source de gros projets logiciels. CVS conserve toutes les versions de tous les fichiers, afin que rien ne soit jamais perdu, et de sorte que l'utilisation des personnes l'utilisant puisse être tracée. CVS fournit également un moyen de fusionner du code lorsque deux ou plusieurs personnes travaillent sur le même fichier. Tout le code et toutes les versions sont stockées sur un serveur central (dans le cas de Moodle, sur cvs.moodle.org). Le [http://cvsbook.red-bean.com/cvsbook.html CVS book] (en anglais) contient sur le CVS plus d'informations que celles dont vous avez besoin.


'''CVS''' is the Concurrent Versioning System, a commonly-used way of managing source code for large software projects. CVS keeps all versions of all files so that nothing is ever lost, and usage by different people is tracked. It also provides ways to merge code if two or more people are working on the same file. All code and all versions are stored on a central server (in the case of Moodle, at Sourceforge). The [http://cvsbook.red-bean.com/cvsbook.html CVS book] holds more information about CVS than you need.
Si vous voulez simplement télécharger Moodle en utilisant CVS pour créer un site, vous n'avez sans doute pas besoin de cette page - voyez plutôt [[CVS pour administrateurs]].


If you just want to download Moodle using CVS to run a site, then you probably don't need this page - please see [[CVS for Administrators]] instead.
== Joindre le projet comme développeur ==


==Joining the project as a developer==
Donc, on vient de vous offrir un accès en écriture au CVS pour que vous nous aidiez à développer et entretenir Moodle ! Bienvenue à bord !


So, you've been offered CVS write access to help us develop and maintain Moodle! [http://sourceforge.net/project/memberlist.php?group_id=30935 Welcome aboard]!
Pour pouvoir écrire des modifications dans [http://cvs.moodle.org/moodle/ l'archive CVS de Moodle], vous devez posséder un compte avec les droits d'écriture. Pour demander un tel compte, cliquez sur l'onglet "Apply for CVS Access" sur la page CVS sur Moodle.org (http://moodle.org/cvs), et expliquez (en anglais) sur quel module vous souhaitez travailler, et pourquoi, afin que l'on puisse vous configurer un compte en vous donnant accès en écriture aux dossiers Moodle spécifiques. Un délai d'une journée ou deux pourra être nécessaire afin de vous ouvrir le compte.


To be able to write changes into [http://moodle.cvs.sourceforge.net/moodle/moodle/ Moodle's CVS archive], you first need to have an account at Sourceforge ([http://sourceforge.net/account/newuser_emailverify.php registration is free and easy]). For the examples on this page, let's assume your username is myusername and your password is mypassword.
Une fois ceci fait, vous aurez toutes les autorisations nécessaires. Il ne vous restera qu'à télécharger les sources actuelles de Moodle et à configurer votre machine pour travailler dessus.


Once you have a working Sourceforge account, contact [http://moodle.com/helpdesk Martin Dougiamas] so he can set up your account with write access to particular Moodle directories.
Pour les exemples de cette page, nous considérerons que votre nom d'utilisateur est '''myusername''' et que votre mot de passe est '''mypassword'''.


To avoid being prompted for mypassword every time you run a CVS command, follow [http://sourceforge.net/docman/display_doc.php?docid=761&group_id=1 the Sourceforge directions for using authorized keys]. This step is optional, but it can make your CVS experience a lot nicer.
== Modules CVS ==


With that done, you should have all the permissions you need, so you just need to set up your machine and download the current sources so you can start working on them. There is no need to read the [https://sourceforge.net/docs/E04 Sourceforge CVS documentation] unless you are interested.
Dans le contexte de CVS, le terme ''modules''  fait référence aux différentes collections de code. Dans Moodle, l'archive CVS compte les modules suivants :


==CVS modules==
* '''moodle''' - le code source de Moodle proprement dit
* '''[[:en:Development:contrib|contrib]]''' - les contributions d'utilisateurs et autre code source de fonctionnalités en développement
* '''mysql''' - une version de phpMyAdmin adaptée à Moodle pour l'administration de sa base de données
* '''windows-cron''' - un petit paquetage qui rend possible l'utilisation de cron sur les systèmes Windows
* '''docs''' - diverses documentations supplémentaires fournies par des utilisateurs


Within CVS, the word "modules" refers to separate collections of code. In Moodle we have the following modules within our repository:
La plupart des développeurs travaillent sur les fonctionnalités existantes du module '''moodle'''. Toutefois, d'autres développent également de nouvelles idées dans le module '''contrib'''. Quand le code atteint un niveau suffisant de maturité dans la zone contrib, il peut être déplacé dans le module principal moodle.


* '''moodle''' - the main Moodle source code
== Commandes CVS de base ==
* '''[[Development:contrib|contrib]]''' - user contributions and other assorted code in development
* '''mysql''' - a customised phpMyAdmin to plug into Moodle for database admin
* '''windows-cron''' - a small package that makes cron possible on Windows systems
* '''docs''' - various extra user-contributed documentation


Most people are working on the existing features in the moodle module, but many are also contributing new ideas in the contrib modules. Once code reaches a certain level of maturity in the contrib area, it can be migrated over into the main moodle tree.
=== CVS sur Unix ===


==Basic CVS commands==
Le CVS de Moodle utilise ssh comme couche de transport, pour des raisons de sécurité. Il vous sera donc nécessaire de définir une variable d'environnement CVS_RSH dans votre shell Unix. Le mieux est de placer les commandes ci-dessous dans votre fichier ''.bashrc'' ou ''.cshrc'', de sorte que vous n'ayez pas à les retaper à chaque fois :
        setenv CVS_RSH ssh (pour csh, tcsh, etc.)
        export CVS_RSH=ssh (pour sh, bash, etc.)


===CVS on Unix===
Ensuite, vous pouvez télécharger sur votre ordinateur la dernière version de développement de Moodle en tapant ceci (le tout sur une ligne). Attention ! Ne lancez pas cette commande dans un dossier contenant déjà une installation de Moodle ; commencez dans un dossier vide !
        cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle


Sourceforge CVS uses ssh as a transport layer for security, so you will have to set a CVS_RSH environment variable in your Unix shell. It's best to put these commands in your .bashrc or .cshrc so you don't have to type it all the time:
Utilisez une commande analogue pour les autres modules CVS :
        setenv CVS_RSH ssh (for csh, tcsh etc)
        cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib
        export CVS_RSH=ssh (for sh, bash etc)


Next, you can check out the latest development version of Moodle using this (all one line). NOTE: Don't try to do run this first CVS command over an existing moodle installation: start fresh with a new directory!:
        cvs -z3 -d:ext:myusername@moodle.cvs.sourceforge.net:/cvsroot/moodle co moodle


The command is similar for other CVS modules:
Votre mot de passe ''mypassword'' vous sera demandé pour chaque commande, à moins que vous n'ayez mis en place des clefs d'autorisation.
        cvs -z3 -d:ext:myusername@moodle.cvs.sourceforge.net:/cvsroot/moodle co contrib


 
Vous devriez disposer maintenant d'un nouveau dossier ''moodle''. Vous pouvez le renommer ou le déplacer à votre guise. Placez-vous dans ce dossier :
 
Note that you will be prompted for mypassword for each command unless you set up authorized keys.
 
Now, you should have a new 'moodle' directory. You can rename it and move it around if you like. Go into it:
         cd moodle
         cd moodle


All the latest Moodle files should be in there. You can now change files in your copy. To compare your files and directories against the main CVS copy on the server use cvs diff, e.g.:
La totalité des fichiers Moodle, dans leur dernière version, devraient s'y trouver. Vous pouvez maintenant modifier les fichiers de votre copie locale. Pour comparer vos fichier et dossiers avec ceux du serveur CVS, utilisez la commande ''cvs diff'', par exemple :
         cvs diff -c config-dist.php
         cvs diff -c config-dist.php
         cvs diff -c lang
         cvs diff -c lang


To fetch the latest updates from the server use:
Pour télécharger les dernières mises à jour depuis le serveur, tapez :
         cvs update -dP
         cvs update -dP


To copy your new files back to the server you would do something like:
Pour copier vos nouveaux fichiers vers le serveur, vous taperez quelque chose comme :
         cd lang/ca
         cd lang/fr_utf8
         cvs commit
         cvs commit


You will be prompted to add some comments (depends on your default text editor).   Please write a meaningful, descriptive comment and '''always include the name of any tracker issues that talk about the issue you are fixing''' (eg '''MDL-XXXX''').
Vous pourrez indiquer un commentaire (cela dépendra de votre éditeur de texte par défaut). Veuillez écrire un texte bref et descriptif et '''indiquez toujours l'identifiant (du traqueur de bogues) du problème que vous êtes en train de traiter''', par exemple '''MDL-XXXX'''.


After that your changes will be sent to Sourceforge and stored in the repository. Done!
Vos modifications seront alors envoyées et stockées dans le CVS. C'est tout !


To save more time you can put default arguments into a file called .cvsrc in your home directory. For example, mine contains:
Pour gagner du temps, vous pouvez placer les arguments de vos commandes par défaut dans un fichier dénommé ''.cvsrc'' dans votre dossier de démarrage. Par exemple, il pourrait contenir :
         diff -c
         diff -c
         update -dP
         update -dP


Try 'cvs help' for more details ...
Tapez ''cvs help'' si vous avez besoin de plus de détails !
 
=== CVS sur Mac OSX ===
 
La procédure est exactement identique à celle utilisée depuis un ordinateur Unix. Toutefois, pour utiliser CVS avec Mac OS X, vous devrez auparavant installer les outils de développement (''XCode Tools'') de Mac OS X.
 
Si vous ne savez pas si les ''Xcode Tools'' sont installés sur votre Mac, jetez un coup d'oeil à la racine de votre disque dur de démarrage. Si un dossier ''Developer'' s'y trouve, vous n'avez rien de plus à effectuer.
 
[[Image:Moodle4Mac_Update4.png]]


===CVS on Mac OSX===
Si vous ne trouvez pas ce dossier sur votre disque dur, vous devrez l'installer avant de pouvoir utiliser les instructions de ce document (ci-dessus). Le paquetage d'installation des ''Xcode Tools'' est disponible sur le DVD ou l'un des CD d'installation de Mac OS X.


You can follow the same instructions as for Unix (above) in a terminal window. However, the cvs command is not installed by default in an OSX. You first need to install the XCode Tools. You should find this on your original installation disk. Failing that it can be downloaded (a fairly hefty download) from the Apple developer web site ([http://developer.apple.com]).
[[Image:Moodle4Mac_Update5.png]]


===CVS on Windows===
Si vous ne trouvez plus vos CD ou votre DVD d'installation, vous pouvez aussi télécharger les ''Xcode Tools'' à l'adresse http://developer.apple.com/tools/xcode/. C'est gratuit, mais vous devrez vous enregistrer (gratuitement) comme développeur. Veuillez noter que ces outils de développement sont assez volumineux et que le téléchargement durera donc plusieurs minutes.


First, you need to download a completely fresh copy of Moodle using your developer account.
Comme Mac OS X est un Unix, les mêmes instructions que pour Unix (ci-dessus) peuvent alors être suivies. Tapez les commandes dans une fenêtre Terminal.


1. Get TortoiseCVS from tortoisecvs.org and install it, then reboot.
=== CVS sur Windows ===


2. Find or create a new folder somewhere where you want Moodle to be downloaded to.
Tout d'abord, vous devez télécharger une toute nouvelle copie de Moodle en utilisant votre compte développeur.


3. Right-mouse-click that folder and choose "CVS Checkout" from the menu. You should see a dialog box.
1. Téléchargez et installez TortoiseCVS (à partir de tortoisecvs.org), puis rebootez.


4. Copy this text into the CVSROOT field (using your own username!):
2. Créez ou identifiez un répertoire dans lequel vous voulez installer la version de travail de Moodle.


          :ext:myusername@moodle.cvs.sourceforge.net:/cvsroot/moodle
3. Cliquez-droit sur ce répertoire et activez le menu "CVS Checkout". Vous verrez apparaître une boîte de dialogue.


5. Under the "Module" field, type "moodle" to get the latest development version of Moodle, "contrib" to get the contributions directory, or "mysql" to get the MySQL Admin module.
4. Copiez le texte suivant dans le champ CVSROOT (utilisez votre login à vous !):


6. Press the button: "OK" and everything should be downloaded.
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle


A dialog box should show all the files being downloaded, and after a while you should have a complete copy of Moodle. After this first checkout, you can fetch the latest updated files from the CVS server:
5. Dans le champ "Module", tapez "moodle" pour récupérer la dernière version de développement de Moodle, "contrib" pour récupérer une copie des répertoires contributifs, ou "mysql" pour récupérer le module d'administration MySQL.


# Right-mouse-click on your Moodle folder (or any file) and select "CVS Update".
6. Cliquez sur le bouton "OK" et tout ce que vous avez demandé sear téléchargé.
# Sit back and watch the logs scroll by. Take note of conflicts that may occur if your local code has changes that conflict with the incoming versions - you will need to edit these files and resolve the conflicts manually.


After modifying files (you will notice their icons change from green to red!), you can commit them back to the CVS server like this:
Un boîte de dialogue vous montrera la liste des fichiers téléchargés, et au bout d'un moment vous devriez avoir une version complète de Moodle sur votre machine. Une fois cette première installation effectuée, vous n'aurez plus qu'à venir chercher les dernières mises à jours de fichiers sur le serveur CVS :


# Right-mouse-click on your Moodle folder (or any file) and select "CVS Commit...".
# Cliquez-droit sur un répertoire ou un fichier quelconque de l'arborescence de Moodle et activez le menu "CVS Update".
# In the dialog box, type a clear description of the changes you are committing.  '''Always include the name of any tracker issues related to what you are fixing''' (eg '''MDL-XXXX''').
# Asseyez-vous confortablement et observez les lignes de journalisation qui défilent au fur et à mesure de la procédure. Notez les conflits qui vous sont signalés, indiquant une incompatibilité entre votre code et le code qui a été maintenu sur le serveur CVS - vous devrez reprendre ces fichiers à la main et résoudre les conflits qui ont été marqués dans le code source.
# Click "OK". Your changes will be sent to the server.
# If you create a folder, BE CAREFUL about using the "CVS Add" option as it will add the folder to CVS without requiring a commit. Once added, the folder cannot be removed from CVS even though it will be pruned so long as it is empty.


==Working with branches==
Après avoir modifié les fichiers (les icônes passent du vert au rouge !), vous pouvez valider vos modifications dans le serveur CVS comme ceci :


This diagram shows how the main moodle module branches into different versions over time.
# Cliquez-droit sur le répertoire ou le fichier Moodle à mettre à jour et activez le menu "CVS Commit...".
# Dans la boîte de dialogue, tapez une description courte et explicite des modifications que vous venez d'effectuer.  '''Citez le plus souvent possible une référence à un défaut déjà enregistré dans le traqueur de défauts officiel de Moodle''' (ex. '''MDL-XXXX''').
# Clickez "OK". Vos modifications seront envoyées vers le serveur.
# Si vous créez un répertoire, PRENEZ GARDE au fait que l'ajout du répertoire dans le serveur CVS par l'opération "CVS Add" ne demande pas de confirmation (Commit). Une fois ajouté, le répertoire NE PEUT PLUS ETRE ENLEVE DU CVS même s'il est par la suite ignoré parce qu'il serait vide.
 
== Utiliser les branches ==
 
Le diagramme ci-dessous montre comment le module CVS principal moodle bourgeonne en différentes versions au cours du temps.


[[Image:Cvstree.png|CVS tree]]
[[Image:Cvstree.png|CVS tree]]


To see all the current tags and branches that are available, use this command on any old file (such as index.php in the top moodle directory):
Pour avoir une liste complète de toutes les balises CVS et de toutes les branches disponibles, tapez cette commande sur un fichier suffisamment ancien (par exemple ''index.php'' dans le dossier moodle) :
     cvs status -v index.php
     cvs status -v index.php


Some tagging guidelines:
Quelques recommandations au sujet des balises :
* Tag and branch names should always be all upper-case.
* les noms des balises et des branches doivent toujours être en majuscules ;
* Tags and branches should ALWAYS be applied to the entire module (all of Moodle). Don't tag individual files or directories.
* les balises et les branches doivent '''toujours''' être appliquées à l'intégralité du module (c'est-à-dire à la totalité de Moodle). N'appliquez pas de balises sur des fichiers ou des dossiers isolés ;
* We don't allow renaming of tags because people may be relying on them, so get them right the first time!
* il n'est pas permis de renommer les balises, car les développeurs se basent parfois sur leur nom. Tâchez donc de les écrire correctement du premier coup !
 
=== Développement du tronc ===


===Trunk development===
Le "tronc" du CVS et la version de développement principale de Moodle. Dans le système de versionnement CVS, on l'appelle également HEAD, ou encore la branche par défaut.


The Trunk of CVS is the main development version of Moodle. In CVS it is also known as the HEAD, or default branch.
Les développeurs Moodle essaient de maintenir ce tronc le plus stable possible, mais comme il sert à mémoriser et partager les nouvelles implémentations, il est possible d'y trouver des bugs et quelques régressions fonctionnelles.


Moodle developers try to keep this stable as possible, but as it usually contains new code it probably has bugs and small instabilities.
De temps en temps nous décidons que le produit dispose de suffisamment de fonctionnalités pour produire une nouvelle distribution. A ce moment, le tronc est marqué par l'étiquette MOODLE_XX_BETA (dans le cas ou nous souhaiterions revenir à ce point précis du développement) et une nouvelle branche est créée, spécialement pour cette distribution, et nous l'appelons MOODLE_XX_STABLE.


Every now and then we decide the product has enough features to make a release. At this time, the trunk is tagged with a MOODLE_XX_BETA tag (in case we ever want to roll back to that point) and a new branch is formed for the release, called MOODLE_XX_STABLE.
Une archive Beta est constituée à ce moment et diffusée en téléchargement - nous le faisons pour les testeurs qui n'utilisent pas le CVS, mais veulent tester les nouvelles fonctionnalités et reporter les défauts.


A Beta package is also released at this point - it's for testers who don't use CVS but want to test the latest features and report bugs.
=== Branche stable pour chaque version ===


===Stable branches for each release===
Dès que la branche MOODLE_XX_STABLE est créée, l'effort de développement se divise en deux pendant un moment. Certaines personnes continueront à travailler sur des nouvelles fonctionnalités dans le tronc, en vue de la version suivante, mais la plupart des développeurs devraient concentrer leur attention sur la branche STABLE pour réduire les défauts qui y restent.


As soon as the stable branch MOODLE_XX_STABLE is created, development efforts will fork into two streams for a while. Some people may continue working on new features in the trunk for the next release, but most developers should be concentrating on using the current STABLE branch and fixing bugs that are found in it.
Vous pouvez synchroniser votre copie locale de Moodle sur la version STABLE en utilisant la commande suivante (Unix) à partir de la racine d'installation de Moodle :


You can switch your local copy of Moodle to the STABLE version using the following command in Unix from the root directory:
     cvs update -dP -r MOODLE_XX_STABLE
     cvs update -dP -r MOODLE_XX_STABLE


After that, all the commands described above will apply to that stable version. To return to the trunk version just issue:
Immédiatement après cette opération, toutes les commandes décrites ci-après s'appliqueront à cette version stable. Pour rétablir le code du tronc, il vous suffit d'exécuter :
 
     cvs update -dPA
     cvs update -dPA


On Windows clients you should have a menu from which you can choose the branch.
Sur les clients Windows, une liste déroulante vous permet de sélectionner la branche pour les commandes update ou checkout.


Once the new STABLE branch really stabilises, a release can be declared. Packages are created for distribution and the branch will be tagged (by Martin) with a tag named: MOODLE_XXX
Une fois que la branche STABLE se stabilise réellement, une distribution stable peut être publiée. L'archive de distribution est créée et la branche est alors étiquetée (par Martin Dougiamas) au nom de : MOODLE_XXX


Periodically, bug fixes in the STABLE branch should be merged into the trunk so that they become available in future versions of Moodle. A floating tag called MOODLE_XX_MERGED will be maintained to keep track of the last merge. The procedure for such a merge is as follows:
===Propager les corrections de bug===


1. Get out the very latest trunk version.
Toute correction de bug dans une branche STABLE devrait être propagée dans le tronc pour que les versions suivantes de Moodle puissent en bénéficier. Une étiquette flottante appelée MOODLE_XX_MERGED doit être gérée pour marquer les correspondances les plus récentes avec le tronc. La procédure pour gérer ce marqueur est la suivante (j'utilise la ligne de commande CVS sur Unix mais la procédure est identique quelque soit le client CVS) :


1. Je recommande vivement de constituer localement une copie de référence de chaque branche stable ainsi que du tronc afin de pouvoir facilement aller de l'une à l'autre.  Chacune de ces versions peut être activée comme un hôte virtuel sur votre machine locale. J'utilise pour ma part des répertoires /moodle/18, /moodle/19 /moodle/dev etc.
2. Mettez à jour les fichiers qui vous concernent dans la version stable (j'utiliserai XX dans l'exemple, mais cela pourrait être 18, 19, etc), et lancez un "CVS diff" pour effectuer la double vérification sur ce dont vous disposez réellement. Notez que vous n'avez besoin de mettre à jour que les fichiers (resp. répertoires) sur lesquels vous travaillez, mais parfois il peut être utile de faire une mise à jour générale des fichiers pour maintenir sa plate-forme à jour de tout ce qui est modifié.
          cd /moodle/XX/user
           cvs update -dPA
           cvs update -dPA
          cvs diff -c file1.php file2.php


2. Merge everything on the branch since the last merge, into your trunk version
3. Si tout a l'air bon, modifiez les fichiers pour corriger le bug et soumettez les au serveur. Assurez-vous que le message de commentaire de la soumission comporte bien l'identifiant (ex. MDL-1111) du défaut que vous corrigez ainsi qu'une explication courte mais suffisante de votre modification.  Si vous ne définissez pas de message en ligne de commande, une saisie interactive vous sera proposée pour en taper un.


           cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE
           cvs commit -m "MDL-1234 Corrected a small typo in the user name field" file1.php file2.php


3. Carefully watch the update logs for conflicts, and fix every file that you see with a conflict
4. Allez à la version la plus récente de Moodle (le tronc). Effectuez une mise à jour complète du code de cette version, ou du moins, du répertoire qui vous concerne.
         
          cd /moodle/dev/user
          cvs update -dPA


4. Check the merged copy back into CVS trunk version
5. Effectuez le report des modifications des branches stables dans le tronc, à partir de la dernière situation reportée connue (il s'agit de propager toutes les modifications ultérieures à la position de l'indicateur MOODLE_XX_MERGED). Vous pouvez ré-exécuter la séquence (4) et (5) pour propager les modifications vers d'autres branches stables (afin de synchroniser des versions antérieures avec vos modifications).


           cvs commit
          cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php
 
6. Vérifiez attentivement le rapport de mise à jour en quête d'éventuels conflits, et résolvez ces derniers. Après coup, vous pourrez effectuer un "CVS Diff" pour vérifier que tout est en ordre :
 
          cvs diff -c file1.php file2.php
 
7. Soumettez à nouveau les modifications locales provoquées par les reports dans le tronc du CVS :
 
           cvs commit -m "MDL-1234 Corrected a small typo in the user name field, merged from XX" file1.php file2.php
 
8. Retournez à votre version de branche :
 
          cd /moodle/XX/user
 
9. Mettez à jour les indicateurs flottants MOODLE_XX_MERGE (il coïncideront avec l'étiquette MOODLE_XX_STABLE) de sorte de servir de point de départ pour la prochaine session
 
          cvs tag -RF MOODLE_XX_MERGED file1.php file2.php
 
Enfin, les valeurs de la variable $version de tous les fichiers version.php de Moodle de la branche stable doivent être mises à jour (on n'utilisera que les deux derniers chiffres au moins si plusieurs modifications sont faites le même jour). La raison en est que des personnes effectuant une mise à jour d'une version "très" stable vers une autre version "très" stable pourraient omettre d'exécuter des modifications de base de données nécessaires à la bonne marche du tronc.


5. Go back to the branch version
=== Quelques commandes CVS utiles ===


          cvs update -dPr MOODLE_XX_STABLE
Pour récupérer la version d'un fichier à une certaine date, on utilisera une commande de ce type :


6. Update the floating merge tag so that this process can be repeated next time
      cvs update -r MOODLE_19_STABLE -D "4 Jan 2008" filename.php


          cvs tag -RF MOODLE_XX_MERGED
et pour obtenir la distribution complète disponible à cette date, cette commande :


Finally, the values for $version in all the Moodle version.php files within the stable branch should not be updated at all if possible (except the last digit if necessary). The reason is that someone updating from a very stable version to the next very stable version could miss database upgrades that happened on the trunk.
      cvs update -dP -r MOODLE_19_STABLE -D "4 Jan 2008"


===Feature branches for large changes===
===Utiliser les branches pour des évolutions importantes===


Occasionally, there may be a very large feature that needs to be checked in so several people can work on it, but it is too unstable to be included in the main development trunk.
Parfois, il se peut qu'une fonctionnalité demande de nombreux changements et le travail d'un certain nombre de personnes, mais soit trop instable pour pouvoir être synchronisée dans le tronc.


In these cases a short-term branch can be created to work on the feature, and then merged back into the main trunk as soon as possible. An example called MOODLE_17_WIDGET branch can be seen in the above diagram.
Dans ces cas de figure, une branche temporaire peut être créée pour travailler précisément sur ce point, puis reportée sur le tronc aussitôt que possible. Un exemple d'une telle branche appelée MOODLE_XX_WIDGET est illustrée par le diagramme ci-après.


If you need to do this for your new WIDGET feature, follow these steps:
Si vous avez ce besoin pour votre propre fonctionnalité WIDGET, suivez cette procédure :


1. Discuss with other developers to make sure it's necessary!
1. Discutez d'abord avec d'autres développeurs pour vous assurer de la pertinence du développement !


2. Make a new tag on the trunk (for all of moodle) called MOODLE_XX_WIDGET_PRE
2. Ajoutez une nouvelle étiquette (pour la totalité des fichiers de moodle) appelée MOODLE_XX_WIDGET_PRE


           cvs tag -R MOODLE_XX_WIDGET_PRE
           cvs tag -R MOODLE_XX_WIDGET_PRE


3. Create your branch called MOODLE_XX_WIDGET
3. Créez votre branche nommée MOODLE_XX_WIDGET


           cvs tag -Rb MOODLE_XX_WIDGET
           cvs tag -Rb MOODLE_XX_WIDGET


4. Work in that branch until the feature is reasonably stable. Commit as necessary.
4. Travaillez dans cette branche jusqu'à ce que les modifications apportées soient suffisamment stables. Soumettez vos modifications au serveur autant que nécessaire.


           cvs commit
           cvs commit


5. When ready, merge the whole branch into the trunk, fix conflicts, commit it to the trunk and then abandon the branch.
5. Lorsque vous êtes prêt, rabattez toute la branche dans le tronc, résolvez les conflits, soumettez les versions définitives puis abandonnez la branche.


           cvs update -dPA
           cvs update -dPA
Ligne 197 : Ligne 233 :
           cvs commit
           cvs commit


Good luck, be careful and have fun!
Bonne chance, opérez avec prudence et éclatez-vous !
 
== Mais qui donc est... ? ==


==Tips and Hints==
Certaines personnes contribuant au code source de Moodle possèdent des noms d'utilisateurs amusants sur le serveur CVS. Si par hasard vous jetez un œil sur une contribution sur le CVS et que vous vous demandez : "Mais qui est donc ce purpleblob ?", cette liste pourra vous aider :
* [[Tracking Moodle CVS with git]]
 
;diml: [http://moodle.org/user/view.php?id=34826&course=5 Valery Fremaux]
;jmg324: [http://moodle.org/user/view.php?id=93820&course=5 Jenny Gray] (Open University)
;mjollnir_: [http://moodle.org/user/view.php?id=17383&course=5 Penny Leach] (Catalyst)
;moodler: [http://moodle.org/user/view.php?id=1&course=5 Martin Dougiamas] (moodle.com)
;scyrma: [http://moodle.org/user/view.php?id=423027&course=5 Mathieu Petit-Clair] (moodle.com)
;skodak: [http://moodle.org/user/view.php?id=12863&course=5 Petr Škoda] (moodle.com)
;stronk7: [http://moodle.org/user/view.php?id=3176&course=5 Eloy Lafuente]
;thepurpleblob: [http://moodle.org/user/view.php?id=1473&course=5 Howard Miller]
;wildgirl: [http://moodle.org/user/view.php?id=24152&course=5 Helen Foster] (moodle.com)
 
Pour la liste complète, voir [http://moodle.org/mod/cvsadmin/view.php?cid=1 Moodle developers with write access].
 
== Trucs, astuces et autres informations ==
* [[:en:Tracking Moodle CVS with git]]
* [http://moodle.org/mod/forum/discuss.php?d=34472 Merging Custom Moodle Code With Stable Releases]
* [http://moodle.org/mod/forum/discuss.php?d=34472 Merging Custom Moodle Code With Stable Releases]
* [[Unmerged files]]: To see if you've forgotten to merge any file.
* [[:en:Unmerged files]]: Pour vérifier si vous avez laissé des modifications non reportées dans le tronc.
* [http://ximbiot.com/cvs/manual/ CVS Manual]
* [http://ximbiot.com/cvs/manual/ CVS Manual]
* [[Development:contrib|Introduction to the '''contrib''' area of CVS]]
* [[:en:Development:contrib|Introduction to the '''contrib''' area of CVS]]
 
== Voir aussi ==


When you have difficulties accessing CVS this may be due to a problem at Sourceforge. You can check the
* [[CVS pour administrateurs]]
* [https://sourceforge.net/docs/A04/ Sourceforge status page]  
* [http://tracker.moodle.org/browse/MDLSITE-193 "All developers should switch to using the cvs.moodle.org alias"]
for any news about outages.


[[Category:Développeur]]
[[Category:Développeur]]

Dernière version du 5 mai 2008 à 06:45

CVS est un acronyme pour l'expression anglaise Concurrent Versioning System. Il s'agit d'un système très répandu permettant la gestion du code source de gros projets logiciels. CVS conserve toutes les versions de tous les fichiers, afin que rien ne soit jamais perdu, et de sorte que l'utilisation des personnes l'utilisant puisse être tracée. CVS fournit également un moyen de fusionner du code lorsque deux ou plusieurs personnes travaillent sur le même fichier. Tout le code et toutes les versions sont stockées sur un serveur central (dans le cas de Moodle, sur cvs.moodle.org). Le CVS book (en anglais) contient sur le CVS plus d'informations que celles dont vous avez besoin.

Si vous voulez simplement télécharger Moodle en utilisant CVS pour créer un site, vous n'avez sans doute pas besoin de cette page - voyez plutôt CVS pour administrateurs.

Joindre le projet comme développeur

Donc, on vient de vous offrir un accès en écriture au CVS pour que vous nous aidiez à développer et entretenir Moodle ! Bienvenue à bord !

Pour pouvoir écrire des modifications dans l'archive CVS de Moodle, vous devez posséder un compte avec les droits d'écriture. Pour demander un tel compte, cliquez sur l'onglet "Apply for CVS Access" sur la page CVS sur Moodle.org (http://moodle.org/cvs), et expliquez (en anglais) sur quel module vous souhaitez travailler, et pourquoi, afin que l'on puisse vous configurer un compte en vous donnant accès en écriture aux dossiers Moodle spécifiques. Un délai d'une journée ou deux pourra être nécessaire afin de vous ouvrir le compte.

Une fois ceci fait, vous aurez toutes les autorisations nécessaires. Il ne vous restera qu'à télécharger les sources actuelles de Moodle et à configurer votre machine pour travailler dessus.

Pour les exemples de cette page, nous considérerons que votre nom d'utilisateur est myusername et que votre mot de passe est mypassword.

Modules CVS

Dans le contexte de CVS, le terme modules fait référence aux différentes collections de code. Dans Moodle, l'archive CVS compte les modules suivants :

  • moodle - le code source de Moodle proprement dit
  • contrib - les contributions d'utilisateurs et autre code source de fonctionnalités en développement
  • mysql - une version de phpMyAdmin adaptée à Moodle pour l'administration de sa base de données
  • windows-cron - un petit paquetage qui rend possible l'utilisation de cron sur les systèmes Windows
  • docs - diverses documentations supplémentaires fournies par des utilisateurs

La plupart des développeurs travaillent sur les fonctionnalités existantes du module moodle. Toutefois, d'autres développent également de nouvelles idées dans le module contrib. Quand le code atteint un niveau suffisant de maturité dans la zone contrib, il peut être déplacé dans le module principal moodle.

Commandes CVS de base

CVS sur Unix

Le CVS de Moodle utilise ssh comme couche de transport, pour des raisons de sécurité. Il vous sera donc nécessaire de définir une variable d'environnement CVS_RSH dans votre shell Unix. Le mieux est de placer les commandes ci-dessous dans votre fichier .bashrc ou .cshrc, de sorte que vous n'ayez pas à les retaper à chaque fois :

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

Ensuite, vous pouvez télécharger sur votre ordinateur la dernière version de développement de Moodle en tapant ceci (le tout sur une ligne). Attention ! Ne lancez pas cette commande dans un dossier contenant déjà une installation de Moodle ; commencez dans un dossier vide !

       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle

Utilisez une commande analogue pour les autres modules CVS :

       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib


Votre mot de passe mypassword vous sera demandé pour chaque commande, à moins que vous n'ayez mis en place des clefs d'autorisation.

Vous devriez disposer maintenant d'un nouveau dossier moodle. Vous pouvez le renommer ou le déplacer à votre guise. Placez-vous dans ce dossier :

       cd moodle

La totalité des fichiers Moodle, dans leur dernière version, devraient s'y trouver. Vous pouvez maintenant modifier les fichiers de votre copie locale. Pour comparer vos fichier et dossiers avec ceux du serveur CVS, utilisez la commande cvs diff, par exemple :

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

Pour télécharger les dernières mises à jour depuis le serveur, tapez :

       cvs update -dP

Pour copier vos nouveaux fichiers vers le serveur, vous taperez quelque chose comme :

       cd lang/fr_utf8
       cvs commit

Vous pourrez indiquer un commentaire (cela dépendra de votre éditeur de texte par défaut). Veuillez écrire un texte bref et descriptif et indiquez toujours l'identifiant (du traqueur de bogues) du problème que vous êtes en train de traiter, par exemple MDL-XXXX.

Vos modifications seront alors envoyées et stockées dans le CVS. C'est tout !

Pour gagner du temps, vous pouvez placer les arguments de vos commandes par défaut dans un fichier dénommé .cvsrc dans votre dossier de démarrage. Par exemple, il pourrait contenir :

       diff -c
       update -dP

Tapez cvs help si vous avez besoin de plus de détails !

CVS sur Mac OSX

La procédure est exactement identique à celle utilisée depuis un ordinateur Unix. Toutefois, pour utiliser CVS avec Mac OS X, vous devrez auparavant installer les outils de développement (XCode Tools) de Mac OS X.

Si vous ne savez pas si les Xcode Tools sont installés sur votre Mac, jetez un coup d'oeil à la racine de votre disque dur de démarrage. Si un dossier Developer s'y trouve, vous n'avez rien de plus à effectuer.

Moodle4Mac Update4.png

Si vous ne trouvez pas ce dossier sur votre disque dur, vous devrez l'installer avant de pouvoir utiliser les instructions de ce document (ci-dessus). Le paquetage d'installation des Xcode Tools est disponible sur le DVD ou l'un des CD d'installation de Mac OS X.

Moodle4Mac Update5.png

Si vous ne trouvez plus vos CD ou votre DVD d'installation, vous pouvez aussi télécharger les Xcode Tools à l'adresse http://developer.apple.com/tools/xcode/. C'est gratuit, mais vous devrez vous enregistrer (gratuitement) comme développeur. Veuillez noter que ces outils de développement sont assez volumineux et que le téléchargement durera donc plusieurs minutes.

Comme Mac OS X est un Unix, les mêmes instructions que pour Unix (ci-dessus) peuvent alors être suivies. Tapez les commandes dans une fenêtre Terminal.

CVS sur Windows

Tout d'abord, vous devez télécharger une toute nouvelle copie de Moodle en utilisant votre compte développeur.

1. Téléchargez et installez TortoiseCVS (à partir de tortoisecvs.org), puis rebootez.

2. Créez ou identifiez un répertoire dans lequel vous voulez installer la version de travail de Moodle.

3. Cliquez-droit sur ce répertoire et activez le menu "CVS Checkout". Vous verrez apparaître une boîte de dialogue.

4. Copiez le texte suivant dans le champ CVSROOT (utilisez votre login à vous !):

          :ext:myusername@cvs.moodle.org:/cvsroot/moodle

5. Dans le champ "Module", tapez "moodle" pour récupérer la dernière version de développement de Moodle, "contrib" pour récupérer une copie des répertoires contributifs, ou "mysql" pour récupérer le module d'administration MySQL.

6. Cliquez sur le bouton "OK" et tout ce que vous avez demandé sear téléchargé.

Un boîte de dialogue vous montrera la liste des fichiers téléchargés, et au bout d'un moment vous devriez avoir une version complète de Moodle sur votre machine. Une fois cette première installation effectuée, vous n'aurez plus qu'à venir chercher les dernières mises à jours de fichiers sur le serveur CVS :

  1. Cliquez-droit sur un répertoire ou un fichier quelconque de l'arborescence de Moodle et activez le menu "CVS Update".
  2. Asseyez-vous confortablement et observez les lignes de journalisation qui défilent au fur et à mesure de la procédure. Notez les conflits qui vous sont signalés, indiquant une incompatibilité entre votre code et le code qui a été maintenu sur le serveur CVS - vous devrez reprendre ces fichiers à la main et résoudre les conflits qui ont été marqués dans le code source.

Après avoir modifié les fichiers (les icônes passent du vert au rouge !), vous pouvez valider vos modifications dans le serveur CVS comme ceci :

  1. Cliquez-droit sur le répertoire ou le fichier Moodle à mettre à jour et activez le menu "CVS Commit...".
  2. Dans la boîte de dialogue, tapez une description courte et explicite des modifications que vous venez d'effectuer. Citez le plus souvent possible une référence à un défaut déjà enregistré dans le traqueur de défauts officiel de Moodle (ex. MDL-XXXX).
  3. Clickez "OK". Vos modifications seront envoyées vers le serveur.
  4. Si vous créez un répertoire, PRENEZ GARDE au fait que l'ajout du répertoire dans le serveur CVS par l'opération "CVS Add" ne demande pas de confirmation (Commit). Une fois ajouté, le répertoire NE PEUT PLUS ETRE ENLEVE DU CVS même s'il est par la suite ignoré parce qu'il serait vide.

Utiliser les branches

Le diagramme ci-dessous montre comment le module CVS principal moodle bourgeonne en différentes versions au cours du temps.

CVS tree

Pour avoir une liste complète de toutes les balises CVS et de toutes les branches disponibles, tapez cette commande sur un fichier suffisamment ancien (par exemple index.php dans le dossier moodle) :

   cvs status -v index.php

Quelques recommandations au sujet des balises :

  • les noms des balises et des branches doivent toujours être en majuscules ;
  • les balises et les branches doivent toujours être appliquées à l'intégralité du module (c'est-à-dire à la totalité de Moodle). N'appliquez pas de balises sur des fichiers ou des dossiers isolés ;
  • il n'est pas permis de renommer les balises, car les développeurs se basent parfois sur leur nom. Tâchez donc de les écrire correctement du premier coup !

Développement du tronc

Le "tronc" du CVS et la version de développement principale de Moodle. Dans le système de versionnement CVS, on l'appelle également HEAD, ou encore la branche par défaut.

Les développeurs Moodle essaient de maintenir ce tronc le plus stable possible, mais comme il sert à mémoriser et partager les nouvelles implémentations, il est possible d'y trouver des bugs et quelques régressions fonctionnelles.

De temps en temps nous décidons que le produit dispose de suffisamment de fonctionnalités pour produire une nouvelle distribution. A ce moment, le tronc est marqué par l'étiquette MOODLE_XX_BETA (dans le cas ou nous souhaiterions revenir à ce point précis du développement) et une nouvelle branche est créée, spécialement pour cette distribution, et nous l'appelons MOODLE_XX_STABLE.

Une archive Beta est constituée à ce moment et diffusée en téléchargement - nous le faisons pour les testeurs qui n'utilisent pas le CVS, mais veulent tester les nouvelles fonctionnalités et reporter les défauts.

Branche stable pour chaque version

Dès que la branche MOODLE_XX_STABLE est créée, l'effort de développement se divise en deux pendant un moment. Certaines personnes continueront à travailler sur des nouvelles fonctionnalités dans le tronc, en vue de la version suivante, mais la plupart des développeurs devraient concentrer leur attention sur la branche STABLE pour réduire les défauts qui y restent.

Vous pouvez synchroniser votre copie locale de Moodle sur la version STABLE en utilisant la commande suivante (Unix) à partir de la racine d'installation de Moodle :

   cvs update -dP -r MOODLE_XX_STABLE

Immédiatement après cette opération, toutes les commandes décrites ci-après s'appliqueront à cette version stable. Pour rétablir le code du tronc, il vous suffit d'exécuter :

   cvs update -dPA

Sur les clients Windows, une liste déroulante vous permet de sélectionner la branche pour les commandes update ou checkout.

Une fois que la branche STABLE se stabilise réellement, une distribution stable peut être publiée. L'archive de distribution est créée et la branche est alors étiquetée (par Martin Dougiamas) au nom de : MOODLE_XXX

Propager les corrections de bug

Toute correction de bug dans une branche STABLE devrait être propagée dans le tronc pour que les versions suivantes de Moodle puissent en bénéficier. Une étiquette flottante appelée MOODLE_XX_MERGED doit être gérée pour marquer les correspondances les plus récentes avec le tronc. La procédure pour gérer ce marqueur est la suivante (j'utilise la ligne de commande CVS sur Unix mais la procédure est identique quelque soit le client CVS) :

1. Je recommande vivement de constituer localement une copie de référence de chaque branche stable ainsi que du tronc afin de pouvoir facilement aller de l'une à l'autre. Chacune de ces versions peut être activée comme un hôte virtuel sur votre machine locale. J'utilise pour ma part des répertoires /moodle/18, /moodle/19 /moodle/dev etc.

2. Mettez à jour les fichiers qui vous concernent dans la version stable (j'utiliserai XX dans l'exemple, mais cela pourrait être 18, 19, etc), et lancez un "CVS diff" pour effectuer la double vérification sur ce dont vous disposez réellement. Notez que vous n'avez besoin de mettre à jour que les fichiers (resp. répertoires) sur lesquels vous travaillez, mais parfois il peut être utile de faire une mise à jour générale des fichiers pour maintenir sa plate-forme à jour de tout ce qui est modifié.

         cd /moodle/XX/user
         cvs update -dPA
         cvs diff -c file1.php file2.php

3. Si tout a l'air bon, modifiez les fichiers pour corriger le bug et soumettez les au serveur. Assurez-vous que le message de commentaire de la soumission comporte bien l'identifiant (ex. MDL-1111) du défaut que vous corrigez ainsi qu'une explication courte mais suffisante de votre modification. Si vous ne définissez pas de message en ligne de commande, une saisie interactive vous sera proposée pour en taper un.

         cvs commit -m "MDL-1234 Corrected a small typo in the user name field" file1.php file2.php

4. Allez à la version la plus récente de Moodle (le tronc). Effectuez une mise à jour complète du code de cette version, ou du moins, du répertoire qui vous concerne.

         cd /moodle/dev/user
         cvs update -dPA

5. Effectuez le report des modifications des branches stables dans le tronc, à partir de la dernière situation reportée connue (il s'agit de propager toutes les modifications ultérieures à la position de l'indicateur MOODLE_XX_MERGED). Vous pouvez ré-exécuter la séquence (4) et (5) pour propager les modifications vers d'autres branches stables (afin de synchroniser des versions antérieures avec vos modifications).

         cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php

6. Vérifiez attentivement le rapport de mise à jour en quête d'éventuels conflits, et résolvez ces derniers. Après coup, vous pourrez effectuer un "CVS Diff" pour vérifier que tout est en ordre :

         cvs diff -c file1.php file2.php

7. Soumettez à nouveau les modifications locales provoquées par les reports dans le tronc du CVS :

         cvs commit -m "MDL-1234 Corrected a small typo in the user name field, merged from XX" file1.php file2.php

8. Retournez à votre version de branche :

         cd /moodle/XX/user

9. Mettez à jour les indicateurs flottants MOODLE_XX_MERGE (il coïncideront avec l'étiquette MOODLE_XX_STABLE) de sorte de servir de point de départ pour la prochaine session

         cvs tag -RF MOODLE_XX_MERGED file1.php file2.php

Enfin, les valeurs de la variable $version de tous les fichiers version.php de Moodle de la branche stable doivent être mises à jour (on n'utilisera que les deux derniers chiffres au moins si plusieurs modifications sont faites le même jour). La raison en est que des personnes effectuant une mise à jour d'une version "très" stable vers une autre version "très" stable pourraient omettre d'exécuter des modifications de base de données nécessaires à la bonne marche du tronc.

Quelques commandes CVS utiles

Pour récupérer la version d'un fichier à une certaine date, on utilisera une commande de ce type :

     cvs update -r MOODLE_19_STABLE -D "4 Jan 2008" filename.php

et pour obtenir la distribution complète disponible à cette date, cette commande :

     cvs update -dP -r MOODLE_19_STABLE -D "4 Jan 2008"

Utiliser les branches pour des évolutions importantes

Parfois, il se peut qu'une fonctionnalité demande de nombreux changements et le travail d'un certain nombre de personnes, mais soit trop instable pour pouvoir être synchronisée dans le tronc.

Dans ces cas de figure, une branche temporaire peut être créée pour travailler précisément sur ce point, puis reportée sur le tronc aussitôt que possible. Un exemple d'une telle branche appelée MOODLE_XX_WIDGET est illustrée par le diagramme ci-après.

Si vous avez ce besoin pour votre propre fonctionnalité WIDGET, suivez cette procédure :

1. Discutez d'abord avec d'autres développeurs pour vous assurer de la pertinence du développement !

2. Ajoutez une nouvelle étiquette (pour la totalité des fichiers de moodle) appelée MOODLE_XX_WIDGET_PRE

         cvs tag -R MOODLE_XX_WIDGET_PRE

3. Créez votre branche nommée MOODLE_XX_WIDGET

         cvs tag -Rb MOODLE_XX_WIDGET

4. Travaillez dans cette branche jusqu'à ce que les modifications apportées soient suffisamment stables. Soumettez vos modifications au serveur autant que nécessaire.

         cvs commit

5. Lorsque vous êtes prêt, rabattez toute la branche dans le tronc, résolvez les conflits, soumettez les versions définitives puis abandonnez la branche.

         cvs update -dPA
         cvs update -kk -j MOODLE_XX_WIDGET
         cvs commit

Bonne chance, opérez avec prudence et éclatez-vous !

Mais qui donc est... ?

Certaines personnes contribuant au code source de Moodle possèdent des noms d'utilisateurs amusants sur le serveur CVS. Si par hasard vous jetez un œil sur une contribution sur le CVS et que vous vous demandez : "Mais qui est donc ce purpleblob ?", cette liste pourra vous aider :

diml
Valery Fremaux
jmg324
Jenny Gray (Open University)
mjollnir_
Penny Leach (Catalyst)
moodler
Martin Dougiamas (moodle.com)
scyrma
Mathieu Petit-Clair (moodle.com)
skodak
Petr Škoda (moodle.com)
stronk7
Eloy Lafuente
thepurpleblob
Howard Miller
wildgirl
Helen Foster (moodle.com)

Pour la liste complète, voir Moodle developers with write access.

Trucs, astuces et autres informations

Voir aussi