Differences between revisions 14 and 16 (spanning 2 versions)
Revision 14 as of 2009-05-19 19:31:00
Size: 4152
Editor: localhost
Comment: converted to 1.6 markup
Revision 16 as of 2011-02-06 09:32:57
Size: 8662
Editor: DenisMoinel
Comment: typo
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:

= Tutorial - faire nos premiers changements =

Nous sommes dans notre dépôt my-hello que nous avons cloné dans le [[FrenchTutorialClone]]

C'est une bonne habitude dans le développement avec Mercurial d'isoler chaque changement dans un dépôt séparé. 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, tout le monde" pour qu'il affiche une autre ligne. D'abord, nous clonons notre dépôt my-hello :

{{{
 $ cd ..
 $ hg clone my-hello my-hello-new-output
}}}
Une fois encore, cette commande n'affiche rien si elle s'exécute sans problème.

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 une opération peu coûteuse avec Mercurial, nous en accumulerons rapidement un certains nombre. 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:
## 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]]

== 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é dansle [[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, [[Clone|clonons]] notre dépôt `mon-hello` en un nouveau dépot `my-hello-new-output` pour notre petit projet (utilisation de Mercurial 1.0) :

{{{
$ cd ..
$ hg clone my-hello my-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 :
Line 26: Line 31:
Le contenu de hello.c ressemble à 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>

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 <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 :

{{{#!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 ambigüe.

{{{
$ 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 @@
Line 42: Line 102:
     printf("hello, world!\n");
     return 0;
    printf("hello, world!\n");
+ printf("sure am glad I'm using Mercurial!\n");
   
return 0;
Line 46: Line 107:
Éditons-le afin qu'il affiche une autre ligne de sortie:

{{{
int main(int argc, char **argv)
{
    printf("hello, world!\n");
    printf("Certain que vous êtes heureux d'utiliser Mercurial!\n");
    return 0;
}
}}}
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.

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

<!> 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 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
Line 64: Line 137:
Cette sortie est laconique, mais elle dit simplement que hello.c a un changement prêt à aller dans le Changeset.

Le fait de créer un Changeset est appelé "commit" (soumission). Nous faisons un "commit" (ou nous soumettons un changeset) à l'aide de la commande:

{{{
$ hg commit
}}}
Ceci va nous envoyer dans notre éditeur de texte (ndr: en général vi) et nous présenter quelques étranges lignes de texte:

{{{
<cette ligne sera vide>

Le fait de créer un !ChangeSet est appelé [[Commit|"committer"]]. Nous faisons
un commit à l'aide de la commande `commit`.
La commande `commit` a 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éfait 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 77: Line 161:
La première ligne est vide et les lignes qui suivent identifient les fichiers qui iront dans le Changeset.

Pour soumettre le Changeset, on doit donner une explication de celui-ci. On appelle cela un commentaire de soumission.
Tapons quelque chose comme ça:

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 ?

{{{
 $ hg status
}}}
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 ?

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 [[http://www.selenic.com/mercurial/hg.1.html#commit|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ée à committer. Notre [[Tip]] correspond maintenant au contenu du dossier du dossier de travail.

La commande [[Parent|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 102: Line 229:
Il est bien là ! Nous avons soumis notre Changeset.

Comme nous en parlions dans le [[FrenchTutorialClone]], le nouveau Changeset existe uniquement dans ce dépôt.

''Note:'' L'utilisateur, la date et le [[ChangeSet
ID|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.
Line 108: Line 236:
CategoryFrench CategoryTutorial CategoryFrench

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é dansle 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 my-hello-new-output pour notre petit projet (utilisation de Mercurial 1.0) :

$ cd ..
$ hg clone my-hello my-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 my-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 ambigüe.

$ 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 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 a 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éfait 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ée à 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 FrenchTutorialShareChange.


CategoryTutorial CategoryFrench

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