Differences between revisions 6 and 25 (spanning 19 versions)
Revision 6 as of 2005-08-28 09:11:10
Size: 4019
Editor: mpm
Comment:
Revision 25 as of 2012-11-06 16:27:44
Size: 8575
Editor: abuehl
Comment: remove link to deleted page "parent"
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Tutorial - faire nos premiers changements = = #language fr
## page was renamed from TutorialPremiersChangements
## 2009-08-06 Frédéric Bouquet (youshe) <youshe.jaalon@gmail.com> - Mise à jour à la dernière version
Ce document est la traduction de l'original en anglais TutorialFirstChange
Line 3: Line 6:
Nous sommes dans notre dépôt my-hello que nous avons cloné dans le ["TutorialCloneFr"] == 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)''
Line 5: Line 9:
C'est une bonne habitude dans le développement avec Mercurial d'isoler chaque changement dans un dépôt différent, séparé. Cela empêche le mélange de code non lié et rend plus simple les tests de gros morceaux de travail un par un. Commençons en suivant ce modèle. Nous arrivons du FrenchTutorialHistory, nous sommes dans notre dépôt `mon-hello` qui a été cloné dans le FrenchTutorialClone
Line 7: Line 11:
Notre stupide but initial est de modifier notre programme "hello, tout le monde" pour qu'il affiche une autre ligne. D'abord, nous clonons notre dépôt my-hello : 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) :
Line 10: Line 16:
 $ cd ..
 $ hg clone my-hello my-hello-new-output
$ cd ..
$ hg clone mom-hello mon-hello-new-output
updating working directory
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Line 13: Line 21:
Une fois encore, cette commande n'affiche rien si elle aboutit. 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).
Line 15: Line 23:
Note: Notez que nous avons donné à notre dépôt un nom descriptif, qui identifie simplement le but de celui-ci. Puisque faire un clonage d'un dépôt est bon marché avec Mercurial, nous en accumulerons rapidement pas mal de différents. Si nous ne donnons pas de noms descriptifs à ceux-ci, nous perdrons rapidement la capacité de les identifier un à un.

Maintenant il est temps de faire un changement dans notre nouveau dépôt. Allons dans le dossier de travail, qui est simplement le nom du répertoire contenant les fichiers:
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 :
Line 20: Line 26:
$ cd my-hello-new-output $ cd mon-hello-new-output
Line 23: Line 29:
Le contenu de hello.c ressemble à ceci: Le contenu de hello.c ressemble initialement à ceci:
Line 25: Line 31:
{{{
 /*
  * 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.
  */
{{{#!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.
 */
Line 35: Line 41:
 #include <stdio.h> #include <stdio.h>
Line 37: Line 43:
 int main(int argc, char **argv)
 {
     printf("hello, world!\n");
     return 0;
 }
}}}
Éditons-le afin qu'il affiche une autre ligne de sortie:

{{{
Line 48: Line 45:
    printf("hello, world!\n");
    printf("Certain que vous êtes heureux d'utiliser Mercurial!\n");
return 0;
     printf("hello, world!\n");
        return 0;
Line 53: Line 49:
Une fois que c'est fait, nous quittons vi (ou l'éditeur de texte de notre choix) et nous avons terminé. Voilà. L'édition est maintenant prête pour consister en un Changeset. Éditons la fonction {{{main}}} pour qu'elle affiche une ligne supplémentaire :
Line 55: Line 51:
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. {{{#!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`.
Line 61: Line 69:
Cette sortie est laconique, mais elle dit simplement que hello.c a un changement prêt à aller dans le Changeset. 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.
Line 63: Line 71:
Le fait de créer un Changeset est appelé "commit" (submission). Nous faisons un "commit" (ou nous soumettons un changeset) à l'aide de la commande: 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ë.
Line 66: Line 74:
$ hg commit $ hg st
M hello.c
Line 68: Line 77:
Ceci va nous envoyer dans notre éditeur de texte (ndr: en général vi) et nous présenter quelques étranges lignes de texte: Nous devrions aussi examiner les changements actuels que nous avons fait aux fichiers en utilisant la commande `diff`.
Line 71: Line 80:
<cette ligne sera vide> $ 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. [[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'
Line 74: Line 129:
La première ligne est vide et les lignes qui suivent identifient les fichiers qui iront dans le Changeset. La première ligne est vide et les suivantes identifient l'utilisateur, les branches et les fichiers qui iront dans le !ChangeSet.
Line 76: Line 131:
Pour soumettre le Changeset, on doit donner une raison pour celui-ci. On appelle cela un commentaire de soumission. Tapons quelque chose comme ça: 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 [[http://www.selenic.com/mercurial/hg.1.html#commit|hg.1.html#commit]]).
Line 78: Line 133:
Voici l'expression de la grande joie de l'existence de Mercurial

Ensuite, nous quittons l'éditeur (vi : Esc, :wq), et (comme nous l'attendions) le commit n'affiche rien.

Mais que nous donne alors la commande status maintenant ?
Pour soumettre le !ChangeSet, nous devons donner une explication sur celui-ci (cf. ChangeSetComments). Tapons quelque chose comme ça :
Line 85: Line 136:
 $ hg status 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
Line 87: Line 143:
Rien du tout ! Notre changement a été soumis à un Changeset, donc notre Tip correspond maintenant au contenu du dossier. Cela signifie-t-il que notre commit va se retrouver dans l'historique des changements ? Ensuite, nous sauvons et quittons l'éditeur. Si tout s'est bien passé, la commande `commit` va quitter et n'afficher aucune sortie.
Line 89: Line 145:
<!> 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. [[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

(...)
}}}
Line 98: Line 187:
Il est là ! Nous avons soumis notre Changeset. ''Note:'' L'utilisateur, la date et le [[ChangeSetID|ChangeSet ID]] vont bien sûr varier.
Line 100: Line 189:
Comme nous en parlions dans le ["TutorialCloneFr"], le nouveau Changeset existe uniquement dans ce dépôt. 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.
Line 102: Line 191:
Pour partager ces changements, nous devons continuer avec le ["TutorialPartageChangements"]. Pour partager ces changements, nous devons continuer avec le [[FrenchTutorialShareChange|partage d'un ChangeSet (push)]].

----
CategoryTutorial CategoryFr
ench

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 dépôt séparé (référez vous aussi aux 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 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:

/*
 * 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 <stdio.h>

int main(int argc, char **argv)
{
        printf("hello, world!\n");
        return 0;
}

Éditons la fonction main pour qu'elle affiche une ligne supplémentaire :

(...)

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. 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. hgrc(5)). Alternativement, cette information peut être précisée sur la ligne de commande avec l'option -u (cf. hg help ci ou hg.1.html#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. 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 <mpm@selenic.com>
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 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 partage d'un ChangeSet (push).


CategoryTutorial CategoryFrench

FrenchTutorialFirstChange (last edited 2012-11-06 16:29:50 by abuehl)