Processus de développement
Cette page est destiné aux programmeurs souhaitant apporter des modifications à ELMAH.
Contrôle de version
Présentation
ELMAH utilise Mercurial, un système de contrôle de version distribué. Cela signifie que, même si cette page héberge un dépôt central, de nombreux dépôts clones peuvent contenir leurs propres modifications, dont certains peuvent être fusionnés dans le dépôt principal.
Le modèle de développement pour ELMAH est le suivant :
- Chaque développeur crée un fork du dépôt principal ELMAH. Ce fork est hébergé sur les serveurs Bitbucket.
- Le développeur crée ensuite un clone local de son fork, étant ensuite entreposé sur sa machine locale.
- Il écrit le nouveau code dans son clone local et le commite localement.
- Lorsqu'une modification est prête à être réintégrée au dépôt principal, elle est poussée du clone local du développeur vers son fork.
- Le développeur crée ensuite une pull request décrivant l'effet de la modification et les commits correspondants.
- Le code est examiné ; si d'autres modifications sont suggérées, le processus recommence à partir de la troisième étape.
- Une fois la modification approuvée, un membre de l'équipe ELMAH la fusionne à nouveau dans le dépôt principal.
Installation de Mercurial
Tout d'abord, assurez-vous que Mercurial est installé en exécutant la commande :
|
$ hg version Mercurial Distributed SCM (version 2.0.1) (see http://mercurial.selenic.com for more information) Copyright (C) 2005-2011 Matt Mackall and others This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
Si vous ne souhaitez pas que votre nom d'hôte et votre nom d'utilisateur soient rendus publics, vous pouvez modifier la façon dont vous êtes identifié dans les commits que vous effectuez en modifiant votre fichier ~/.hgrc :
|
[ui] username = John Doe |
Créer un clone du dépôt
Nous allons devoir créer deux clones du dépôt principal ELMAH : un en ligne, puis un clone local.
Pour créer le clone en ligne, cliquez sur le lien Fork. Donnez un nom et une description à votre clone, puis cliquez sur Fork Le clone en ligne est alors prêt.
Pour créer le clone local, cliquez sur l'onglet «Source» de votre page de clone, puis utilisez la commande d'extraction s'y trouvant :
| hg clone https://johndoe@bitbucket.org/johndoe/main johndoe-elmah |
En option, vous pouvez y ajouter votre nom d'utilisateur et votre mot de passe (afin de ne pas avoir à les saisir à chaque fois) :
| hg clone https://johndoe@bitbucket.org/johndoe/main johndoe-elmah |
Et voilà ! Vous disposez d'une copie locale de votre clone (dans cet exemple, dans le sous-répertoire johndoe-elmah) sur laquelle vous pouvez ensuite apporter des modifications.
Importer les modifications depuis le dépôt principal
La méthode recommandée pour importer les modifications depuis le dépôt principal est d'utiliser hg fetch :
| $ hg fetch https://bitbucket.org/project-elmah/main |
Veuillez noter que la commande fetch est une extension Mercurial équivalente à hg pull -u plus hg merge plus hg commit. Cela signifie que la commande essaiera de fusionner les modifications entrantes avec vos modifications locales.
Pour visualiser le contenu de la commande ci-dessus avant de l'exécuter, utilisez :
| $ hg incoming |
Valider les modifications localement
La validation des modifications localement est simple : exécutez hg status pour voir l'état de votre clone local :
| $ hg status ? MyNewFile M MyChangedFile ! MyDeletedFile |
Dans l'exemple ci-dessus, un fichier inconnu (MonNouveauFichier), un fichier connu mais manquant (MyDeletedFile) et un fichier modifié sont affichés.
Pour ajouter tous les fichiers précédemment inconnus et supprimer les fichiers manquants, utilisez la commande addremove :
|
$ hg addremove Adding MyNewFile Deleting MyDeletedFile |
hg status affiche alors le nouvel état :
|
$ hg status A MyNewFile M MyChangedFile D MyDeletedFile |
Pour voir les modifications, utilisez la commande hg diff. Enfin, validez les modifications avec :
| $ hg commit |
Cela ouvrira un éditeur pour vous permettre de saisir une description de ces modifications. Vous pouvez également spécifier des noms de fichiers à hg commit afin de ne valider qu'une partie de vos modifications actuelles.
IMPORTANT : Lorsque votre modification est intégrée à la source principale d'ELMAH, la description que vous avez saisie ici apparaîtra comme telle dans la source principale d'ELMAH. Veuillez donc utiliser une description pertinente : « Correction d'un bug », « modifications », etc. ne sont pas acceptables. Utilisez plutôt une description comme « Correction d'un bug d'importation GPX provoquant un pointeur bnull », « ajout d'une traduction russe », etc., afin que cela soit cohérent avec ELMAH dans son ensemble, et pas seulement avec votre clone.
Transfert des modifications vers votre clone en ligne
Transfert des modifications vers votre clone en ligne est incroyablement simple :
|
$ hg push pushing to https://johndoe:***@bitbucket.org/johndoe/main searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files and you're done. |
Si vous souhaitez voir les modifications que vous allez appliquer avant de le faire, vous pouvez également utiliser la commande suivante :
|
$ hg outgoing comparing with https://johndoe:***@bitbucket.org/johndoe/main searching for changes changeset: 5:b6fed4f21233 tag: tip user: John Doe date: Tue May 05 06:55:53 2009 +0000 summary: Added an extra line of output |
Demander une revue de code
Pour demander une revue de code, créez une nouvelle pull request depuis votre clone en ligne vers le clone en ligne d'origine d'ELMAH. Un administrateur examinera ensuite les modifications de code et les intégrera dès qu'elles seront prêtes.