#language fr ## page was renamed from TutorialPremiersChangements ## 2009-08-06 Frédéric Bouquet (youshe) - Mise à jour à la dernière version Ce document est la traduction de l'original en anglais TutorialFirstChange == Tutorial - faire nos premiers changements == ''(Cette page est la partie 4 sur 9 de la série FrenchTutorial. La partie précédente est FrenchTutorialHistory, la suivante FrenchTutorialShareChange)'' Nous arrivons du FrenchTutorialHistory, nous sommes dans notre dépôt `mon-hello` qui a été cloné dans le FrenchTutorialClone Une bonne pratique de développement sous Mercurial est d'isoler chaque changement dans un [[Repository|dépôt]] séparé (référez vous aussi aux [[WorkingPractices|pratiques de travail]]). Cela évite de mélanger des modifications non liées entre elles et simplifie les tests de gros morceaux de travail un par un. Commençons en suivant ce modèle. Notre but initial est de modifier notre programme "hello, world" pour qu'il affiche une autre ligne. Pour commencer, clonons notre dépôt `mon-hello` en un nouveau dépot `mon-hello-new-output` pour notre petit projet (utilisation de Mercurial 1.0) : {{{ $ cd .. $ hg clone mom-hello mon-hello-new-output updating working directory 2 files updated, 0 files merged, 0 files removed, 0 files unresolved }}} Note: Notez que nous avons donné à notre dépôt un nom descriptif qui identifie simplement le but de celui-ci. Puisque cloner un dépôt est une opération peu coûteuse avec Mercurial, nous en accumulerons rapidement un certain nombre, tous différents. Si nous ne donnons pas de noms descriptifs à ceux-ci, nous perdrons rapidement la capacité de les identifier un à un (cf. RepositoryNaming). Maintenant il est temps de faire un changement dans notre nouveau dépôt. Allons dans le [[WorkingDirectory|répertoire de travail]] qui est simplement le nom du répertoire contenant les fichiers, et modifions le code source avec notre éditeur favori : {{{ $ cd mon-hello-new-output $ vi hello.c }}} Le contenu de hello.c ressemble initialement à ceci: {{{#!cplusplus numbers=off /* * hello.c * * Placed in the public domain by Bryan O'Sullivan * * This program is not covered by patents in the United States or other * countries. */ #include int main(int argc, char **argv) { printf("hello, world!\n"); return 0; } }}} Éditons la fonction {{{main}}} pour qu'elle affiche une ligne supplémentaire : {{{#!cplusplus numbers=off (...) int main(int argc, char **argv) { printf("hello, world!\n"); printf("sure am glad I'm using Mercurial!\n"); return 0; } }}} Une fois que c'est fait, quittons notre éditeur favori et c'est fini. Voilà. L'édition est maintenant prête pour consister en un ChangeSet. Mais que se passe-t-il si nous avons été interrompu, et que nous avons oublié quels changements vont être intégrés dans le Changeset une fois créé ? Pour cela, nous utilisons la commande `status`. {{{ $ hg status M hello.c }}} Cette sortie est laconique, mais le préfixe `M` dit simplement que `hello.c` a été modifié, ainsi, notre changement est prêt pour être intégré à un !ChangeSet. Au lieu d'un long `hg status`, nous pouvons simplement taper `hg st` puisque Mercurial nous permet d'abréger les commandes tant que la séquence de caractères n'est pas ambiguë. {{{ $ hg st M hello.c }}} Nous devrions aussi examiner les changements actuels que nous avons fait aux fichiers en utilisant la commande `diff`. {{{ $ hg diff diff -r 82e55d328c8c hello.c --- a/hello.c Fri Aug 26 01:21:28 2005 -0700 +++ b/hello.c Mon May 05 00:27:56 2008 +0200 @@ -12,5 +12,6 @@ int main(int argc, char **argv) { printf("hello, world!\n"); + printf("sure am glad I'm using Mercurial!\n"); return 0; } }}} Dans le cas où nous voudrions annuler les changements et recommencer, nous pouvons utiliser la commande `revert` pour restaurer `hello.c` à son état non modifié (ou utiliser l'option `--all` pour restaurer tous les fichiers). Soyez juste sûrs qu'il s'agit vraiment de ce que vous voulez faire (cf. [[Cmd:revert]]). {{{ $ hg revert hello.c }}} `revert` renomme le fichier modifié `hello.c` en `hello.c.orig` et restaure `hello.c` à son état non modifié. `status` liste maintenant `hello.c.orig` comme non suivi (préfixe "?"). {{{ $ hg st ? hello.c.orig }}} Si nous changeons encore d'avis et que nous décidons de réutiliser les modifications que nous avions apportées, il suffit juste de supprimer l'état non modifié de `hello.c` et renommer la version modifiée `hello.c.orig` en `hello.c` {{{ $ rm hello.c $ mv hello.c.orig hello.c $ hg st M hello.c }}} Le fait de créer un !ChangeSet est appelé "committer". Nous faisons un commit à l'aide de la commande `commit`. La commande `commit` dispose d'un court alias utile : `ci` ("check in"), donc, nous pouvons utiliser ceci : {{{ $ hg ci }}} Ceci va nous envoyer dans un éditeur de texte et nous présenter quelques étranges lignes de texte. ''Note :'' l'éditeur par défaut est `vi`. Ceci peut être changé en utilisant la variable d'environnement `EDITOR` ou [[HGEDITOR]]. {{{ HG: Enter commit message. Lines beginning with 'HG:' are removed. HG: -- HG: user: mpm@selenic.com HG: branch 'default' HG: changed hello.c }}} La première ligne est vide et les suivantes identifient l'utilisateur, les branches et les fichiers qui iront dans le !ChangeSet. La branche par défaut est appelée "default" (cf. NamedBranches). La valeur par défaut pour "user" est prise depuis le fichier de configuration {{{~/.hgrc}}} à partir de la valeur "username" de la section "ui" (cf. [[http://www.selenic.com/mercurial/hgrc.5.html#ui|hgrc(5)]]). Alternativement, cette information peut être précisée sur la ligne de commande avec l'option -u (cf. `hg help ci` ou [[Cmd:commit]]). Pour soumettre le !ChangeSet, nous devons donner une explication sur celui-ci (cf. ChangeSetComments). Tapons quelque chose comme ça : {{{ Express great joy at existence of Mercurial HG: Enter commit message. Lines beginning with 'HG:' are removed. HG: -- HG: user: mpm@selenic.com HG: branch 'default' HG: changed hello.c }}} Ensuite, nous sauvons et quittons l'éditeur. Si tout s'est bien passé, la commande `commit` va quitter et n'afficher aucune sortie. Si vous quittez l'éditeur sans sauver le texte ou sans entrer de commentaire, `commit` va annuler l'opération. Vous pouvez donc changer d'avis avant de committer. Regardons maintenant ce que la commande {{{status}}} nous donne : {{{ $ hg st }}} Rien du tout ! Notre changement a été soumis à un !ChangeSet, il ne reste donc plus de fichier modifié à committer. Notre [[Tip]] correspond maintenant au contenu du dossier du dossier de travail. La commande parent nous montre que le répertoire de travail de notre dépôt est maintenant synchronisé (cf. [[Cmd:update]]) au nouveau !ChangeSet committé (Ici, nous avons seulement un parent pour notre révision, ce qui est toujours le cas avant un commit. Nous allons voir deux parents dans le FrenchTutorialMerge): {{{ $ hg par changeset: 2:86794f718fb1 tag: tip user: mpm@selenic.com date: Mon May 05 01:20:46 2008 +0200 summary: Express great joy at existence of Mercurial }}} Ça y est ! Nous avons commité un nouveau !ChangeSet. Nous pouvons maintenant examiner l'historique pour notre travail : {{{ $ hg log changeset: 2:86794f718fb1 tag: tip user: mpm@selenic.com date: Mon May 05 01:20:46 2008 +0200 summary: Express great joy at existence of Mercurial (...) }}} {{{ changeset: 2:b8daa9444f08 tag: tip user: Matt Mackall date: Sun Aug 28 02:10:28 2005 -0700 summary: Voici l'expression de la grande joie de l'existence de Mercurial ... }}} ''Note:'' L'utilisateur, la date et le [[ChangeSetID|ChangeSet ID]] vont bien sûr varier. Comme nous en parlions dans le FrenchTutorialClone, le nouveau !ChangeSet existe uniquement dans ce dépôt. Il s'agit d'une part critique de la façon dont Mercurial travaille. Pour partager ces changements, nous devons continuer avec le [[FrenchTutorialShareChange|partage d'un ChangeSet (push)]]. ---- CategoryTutorial CategoryFrench