Differences between revisions 17 and 26 (spanning 9 versions)
Revision 17 as of 2011-11-01 17:15:44
Size: 8680
Editor: 109
Comment: typo
Revision 26 as of 2012-11-06 16:29:50
Size: 8527
Editor: abuehl
Comment: fix links
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
Ce document est la traduction de l'original en anglais [[TutorialFirstChange]] Ce document est la traduction de l'original en anglais TutorialFirstChange
Line 7: Line 7:
''(Cette page est la partie 4 sur 9 de la série FrenchTutorial. La partie précédente est FrenchTutorialHistory, la suivante FrenchTutorialShareChange)''
Line 8: Line 9:
''(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]]
Nous arrivons du FrenchTutorialHistory, nous sommes dans notre dépôt `mon-hello` qui a été cloné dans le FrenchTutorialClone
Line 14: Line 13:
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) : 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 18: Line 17:
$ hg clone my-hello my-hello-new-output $ hg clone mom-hello mon-hello-new-output
Line 22: Line 21:

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]]).
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 28: Line 26:
$ cd my-hello-new-output $ cd mon-hello-new-output
Line 31: Line 29:
Line 52: Line 49:
Line 65: Line 61:
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.
Line 66: Line 63:
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`.
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 77: Line 69:
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 78: Line 71:
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ë.
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 90: Line 77:

Nous devrions aussi examiner les changements actuels que nous avons fait aux
fichiers en utilisant la commande `diff`.
Nous devrions aussi examiner les changements actuels que nous avons fait aux fichiers en utilisant la commande `diff`.
Line 107: Line 92:

<!> 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]]).
<!> 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]]).
Line 116: Line 97:

`revert` renomme le fichier modifié `hello.c` en `hello.c.orig` et restaure
`hello.c` à son état non modifié.
`revert` renomme le fichier modifié `hello.c` en `hello.c.orig` et restaure `hello.c` à son état non modifié.
Line 126: Line 105:

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`
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`
Line 137: Line 113:

Le fait de créer un !ChangeSet est appelé [[Commit|"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 :
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 :
Line 146: Line 118:
Ceci va nous envoyer dans un éditeur de texte et nous présenter quelques étranges lignes de texte.
Line 147: Line 120:
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]].
''Note :'' l'éditeur par défaut est `vi`. Ceci peut être changé en utilisant la variable d'environnement `EDITOR` ou [[HGEDITOR]].
Line 154: Line 123:
Line 161: Line 129:
La première ligne est vide et les suivantes identifient l'utilisateur, les branches et les fichiers qui iront dans le !ChangeSet.
Line 162: Line 131:
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]]).
Line 165: Line 133:
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 :
Pour soumettre le !ChangeSet, nous devons donner une explication sur celui-ci (cf. ChangeSetComments). Tapons quelque chose comme ça :
Line 183: Line 143:
Line 193: Line 152:
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.
Line 194: Line 154:
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]]):
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):
Line 206: Line 164:
Line 210: Line 167:
Line 229: Line 187:
Line 232: Line 189:
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. 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 234: Line 191:
Pour partager ces changements, nous devons continuer avec le [[FrenchTutorialShareChange]]. Pour partager ces changements, nous devons continuer avec le [[FrenchTutorialShareChange|partage d'un ChangeSet (push)]].

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