Differences between revisions 2 and 3
Revision 2 as of 2009-07-27 22:39:30
Size: 11846
Editor: abuehl
Comment: #language fr
Revision 3 as of 2012-10-23 13:56:15
Size: 11668
Editor: 85-170-114-116
Comment: A few typos corrected, a few sentences rephrased.
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:

(Traduction du texte original en anglais : [[UnderstandingMercurial]])

Le modèle de développement décentralisé de Mercurial peut être confus pour les nouveaux utilisateurs. Cette page tente d'illustrer certains des principes fondamentaux.
Reportez vous au [[Tutorial]] pour des instructions étape par étape.

''(Traductions:
[[UnderstandingMercurial|English]],
[[BrazilianPortugueseUnderstandingMercurial|Brazilian Portuguese]],
[[ChineseUnderstandingMercurial|Chinese]],
[[FrenchUnderstandingMercurial|French]],
[[GermanUnderstandingMercurial|German]],
[[ItalianUnderstandingMercurial|Italian]],
[[JapaneseUnderstandingMercurial|Japanese]],
[[KoreanUnderstandingMercurial|Korean]],
[[RussianUnderstandingMercurial|Russian]],
[[SpanishUnderstandingMercurial|Spanish]],
[[ThaiUnderstandingMercurial|Thai]]
)''
(Traduction du texte original en anglais : UnderstandingMercurial)

Le modèle de développement décentralisé de Mercurial peut être confus pour les nouveaux utilisateurs. Cette page tente d'illustrer certains des principes fondamentaux. Reportez vous au [[Tutorial]] pour des instructions étape par étape.

''(Traductions: [[UnderstandingMercurial|English]], [[BrazilianPortugueseUnderstandingMercurial|Brazilian Portuguese]], [[ChineseUnderstandingMercurial|Chinese]], [[FrenchUnderstandingMercurial|French]], [[GermanUnderstandingMercurial|German]], [[ItalianUnderstandingMercurial|Italian]], [[JapaneseUnderstandingMercurial|Japanese]], [[KoreanUnderstandingMercurial|Korean]], [[RussianUnderstandingMercurial|Russian]], [[SpanishUnderstandingMercurial|Spanish]], [[ThaiUnderstandingMercurial|Thai]] )''
Line 25: Line 10:
== Qu'est qu'il y a dans un dépot ==
== Contenu d'un dépot ==
Line 53: Line 37:

L'entrepôt contient l'historique '''complet''' du projet. A la différence des
[[SCM|SCMs]] classiques, où il n'y a qu'une copie centrale de cet l'historique,
chaque répertoire de travail est associé avec une copie privée de cet
historique. Ceci permet au développement d'évoluer parallèlement.

Le répertoire de travail contient une copie des fichiers du projet à un certain
point du temps (ex : rev. 2), prêts à être édités. Parce que les [[Tag|tags]]
et les [[.hgignore|fichiers ignorés]] sont enregistrés dans une révision, ils
sont aussi inclus.
L'entrepôt contient l'historique '''complet''' du projet. A la différence des [[SCM|SCMs]] classiques, où il n'y a qu'une copie centrale de cet l'historique, chaque répertoire de travail est associé avec une copie privée de cet historique. Ceci permet au développement d'évoluer parallèlement.

Le répertoire de travail contient une copie des fichiers du projet à un certain point du temps (ex : rev. 2), prêts à être édités. Parce que les [[Tag|tags]] et les [[.hgignore|fichiers ignorés]] sont enregistrés dans une révision, ils sont aussi inclus.
Line 65: Line 42:

Lorsque vous faites un [[Commit|commit]], l'état du répertoire de travail
relatif à ses [[Parent|parents]] est enregistré comme un nouveau
[[ChangeSet|changeset]] (aussi appelé une nouvelle "[[Revision|revision]]") :
Lorsque vous faites un [[Commit|commit]], l'état du répertoire de travail relatif à ses [[Parent|parents]] est enregistré comme un nouveau [[ChangeSet|changeset]] (aussi appelé une nouvelle "[[Revision|revision]]") :
Line 96: Line 70:

Notez ici que la révision 4 est une '''[[Branch|branche]]''' de la révision 2,
qui est la révision dans le répertoire de travail. Maintenant, la révision 4
est le '''parent''' du répertoire de travail.
Notez ici que la révision 4 est une '''[[Branch|branche]]''' de la révision 2, qui est la révision dans le répertoire de travail. Maintenant, la révision 4 est le '''parent''' du répertoire de travail.
Line 102: Line 73:

Mercurial groupe les changements relatifs à de multiples fichiers dans
d'uniques [[ChangeSet|changesets]] atomiques qui forment les révisions du
projet global.
Chacun prend un [[RevisionNumber|numéro de révision]] séquenciel. Puisque
Mercurial autorise des développement distribués et parallèles, ces numéros de
révisions peuvent être différents suivant les utilisateurs. Ainsi, Mercurial
assigne à chaque révision un [[ChangeSetID|ID de changeset]] global. Ces ID de
changesets sont des nombre hexadécimaux de 40 digits de long, mais peut être
abrégés à n'importe quel préfixe non ambigu comme "e38487"
Mercurial groupe les changements relatifs à de multiples fichiers dans d'uniques [[ChangeSet|changesets]] atomiques qui forment les révisions du projet global. Chacun prend un [[RevisionNumber|numéro de révision]] séquenciel. Puisque Mercurial autorise des développement distribués et parallèles, ces numéros de révisions peuvent être différents suivant les utilisateurs. Ainsi, Mercurial assigne à chaque révision un [[ChangeSetID|ID de changeset]] global. Ces ID de changesets sont des nombre hexadécimaux de 40 digits de long, mais peut être abrégés à n'importe quel préfixe non ambigu comme "e38487"
Line 136: Line 98:

Des [[Branches|branches]] et [[Merge|merges]] peuvent appraître dans
en tout point de l'historique des révisions. Chaque branche non encore "mergée"
crée un nouvel [[Head|head]] de l'historique. Ici, les révisions 5 et 6 sont
des heads. Mercurial considère la révision 6 comme étant le [[Tip|tip]] du
dépôt, c'est à dire le head avec le plus grand numéro de révision.
La révision 4 est un [[MergeChangeset|changeset de merge (merge changeset)]]
puisqu'il possède ''deux'' changesets parents (révisions 2 et 3).
Des [[Branches|branches]] et [[Merge|merges]] peuvent appraître dans en tout point de l'historique des révisions. Chaque branche non encore "mergée" crée un nouvel [[Head|head]] de l'historique. Ici, les révisions 5 et 6 sont des heads. Mercurial considère la révision 6 comme étant le [[Tip|tip]] du dépôt, c'est à dire le head avec le plus grand numéro de révision. La révision 4 est un [[MergeChangeset|changeset de merge (merge changeset)]] puisqu'il possède ''deux'' changesets parents (révisions 2 et 3).
Line 146: Line 101:

Commençons avec un utilisateur Alice qui possède un dépôt qui ressemble à ceci
:
Commençons avec un utilisateur Alice qui possède un dépôt qui ressemble à ceci :
Line 158: Line 111:

Bob [[Clone|clone]] ce dépôt, et récupère ainsi une copie locale, complète et
indépendante de l'entrepôt d'Alice ainsi qu'une vue propre de la révision "tip"
d dans son répertoire de travail.
Bob [[Clone|clone]] ce dépôt, et récupère ainsi une copie locale, complète et indépendante de l'entrepôt d'Alice ainsi qu'une vue propre de la révision "tip" d dans son répertoire de travail.
Line 171: Line 121:

Bob peut maintenant travailler indépendamment d'Alice. Il [[Commit|commit]] deux
changements e et f :
Bob peut maintenant travailler indépendamment d'Alice. Il [[Commit|commit]] deux changements e et f :
Line 185: Line 133:

Alice apporte ensuite un changement g en parallèle à son propre dépôt, ce qui
conduit à des divergences entre les entrepôt d'Alice et Bob, créant ainsi une
[[Branch|branche]] :
Alice apporte ensuite un changement g en parallèle à son propre dépôt, ce qui conduit à des divergences entre les entrepôt d'Alice et Bob, créant ainsi une [[Branch|branche]] :
Line 199: Line 144:

Bob [[Pull|récupère (pull)]] ensuite le dépôt d'Alice pour synchroniser. Ceci
copie tous les changements d'Alice dans l'entrepôt de Bob (ici, il n'y a qu'un
seul change
: g). Notez que le répertoire de travail de Bob '''n'est pas'''
changé par la récupération :
Bob [[Pull|récupère (pull)]] ensuite le dépôt d'Alice pour synchroniser. Ceci copie tous les changements d'Alice dans l'entrepôt de Bob (ici, il n'y a qu'un seul changement : g). Notez que le répertoire de travail de Bob '''n'est pas''' changé par la récupération :
Line 217: Line 158:

Parce qu
e le '''g''' d'Alice est le head le plus récent dans le dépôt de Bob,
'''g''' est maintenant le '''tip'''.

Bob fait ensuite un [[Merge|merge]] pour combiner les derniers changements sur
lesquels il était en train de travailler (f) avec le tip dans son dépôt.
Maintenant, son répertoire de travail possède deux révisions parentes (f et g)
:
Comme le '''g''' d'Alice est le head le plus récent dans le dépôt de Bob, '''g''' est maintenant le '''tip'''.

Bob fait ensuite un [[Merge|merge]] pour combiner les derniers changements sur lesquels il était en train de travailler (f) avec le tip dans son dépôt. Maintenant, son répertoire de travail possède deux révisions parentes (f et g) :
Line 240: Line 176:

Après avoir examiné le résultat du merge dans son répertoire de travail et
avoir fait en sorte que ce merge est parfait, Bob commit le résultat et fini
avec un nouveau [[MergeChangeset|changeset de merge (merge changeset)]] h dans
son entrepôt :
Après avoir examiné le résultat du merge dans son répertoire de travail et avoir fait en sorte que ce merge soit parfait, Bob commit le résultat et finit avec un nouveau [[MergeChangeset|changeset de merge (merge changeset)]] h dans son entrepôt :
Line 262: Line 194:

Maintenant, si Alice '''récupère (pull)''' depuis Bob, elle obtiendra les
changement e, f et h de Bob dans son propre entrepôt :
Maintenant, si Alice '''récupère (pull)''' depuis Bob, elle obtiendra les changement e, f et h de Bob dans son propre entrepôt :
Line 282: Line 212:

Notez que le répertoire de travail d'Alice n'a pas été changé par la
récupération. Elle doit faire un [[Update|update]] pour synchroniser son
répertoire de travail avec le changeset de merge h. Ceci change le changeset
parent de s on répertoire de travail pour le changet h et met à jour les
fichiers dans son répertoire de travail à la révision h.
Notez que le répertoire de travail d'Alice n'a pas été changé par la récupération. Elle doit faire un [[Update|update]] pour synchroniser son répertoire de travail avec le changeset de merge h. Ceci change le changeset parent de s on répertoire de travail pour le changet h et met à jour les fichiers dans son répertoire de travail à la révision h.
Line 305: Line 230:
Line 308: Line 232:
Line 310: Line 233:

Mercurial est un système totalement décentralisé et ne possède donc pas de
notion interne de dépôt central. Ainsi, les utilisateurs ont toute la liberté
de créer leur propre topologie pour partager les changements (cf.
[[CommunicatingChanges|communiquer les changements]])) :
Mercurial est un système totalement décentralisé et ne possède donc pas de notion interne de dépôt central. Ainsi, les utilisateurs ont toute la liberté de créer leur propre topologie pour partager les changements (cf. [[CommunicatingChanges|communiquer les changements]])) :
Line 333: Line 252:

A la différence d'un gestionnaire de version centralisé dans lequel
l'expérimentation peut être désastreuse, dans un DSCM comme Mercurial, vous
avez juste à cloner et expérimenter. Si vous aimez le résultat, envoyez (push)
le en retour, sinon, supprimez le dépôt cloné et testez quelque chose d'autre.

== Qu'est-ce que Mercurial ne peut pas faire ==

Beaucoup d'utilisateurs SVN/CVS espère héberger tous leurs projets ensemble
dans un seul dépôt. Ceci est exactement ce que Mercurial n'a pas été conçu pour
faire. Donc, vous devriez essayer un nouveau modèle de pensée. Ceci signifie
plus précisément que vous ne pouvez pas récupérer seulement un répertoire dans
un dépô
t.

Si vous avez quand même absolument besoin d'héberger plusieurs projets dans une
sorte de méta-dépôt, vous pouvez essayer la fonctionnalité des
[[subrepos|sous-dépôts]] qui ont été introduits dans Mercurial 1.3 ou
l'ancienne extension [[ForestExtension|Forest]]

Pour des instructions par l'exemple sur comment utiliser Mercurial, reportez
vous au [[Tutorial]]
A la différence d'un gestionnaire de version centralisé dans lequel l'expérimentation peut être désastreuse, dans un DSCM comme Mercurial, vous avez juste à cloner et expérimenter. Si vous aimez le résultat, envoyez (push) le en retour, sinon, supprimez le dépôt cloné et testez quelque chose d'autre.

== Ce que Mercurial ne peut pas faire ==
Beaucoup d'utilisateurs SVN/CVS espèrent héberger tous leurs projets ensemble dans un seul dépôt. Mais Mercurial n'a pas été conçu dans cet esprit. En effet, vous ne pouvez pas récupérer juste un répertoire dans un dépôt. Vous devriez donc essayer d'organiser vos projets autrement.

Si vous avez quand même absolument besoin d'héberger plusieurs projets dans une sorte de méta-dépôt, vous pouvez essayer la fonctionnalité des [[subrepos|sous-dépôts]] qui ont été introduits dans Mercurial 1.3 ou l'ancienne extension [[ForestExtension|Forest]]

Pour des instructions par l'exemple sur comment utiliser Mercurial, reportez vous au [[Tutorial]]

(Traduction du texte original en anglais : UnderstandingMercurial)

Le modèle de développement décentralisé de Mercurial peut être confus pour les nouveaux utilisateurs. Cette page tente d'illustrer certains des principes fondamentaux. Reportez vous au Tutorial pour des instructions étape par étape.

(Traductions: English, Brazilian Portuguese, Chinese, French, German, Italian, Japanese, Korean, Russian, Spanish, Thai )

Contenu d'un dépot

Les dépots Mercurial contiennent un répertoire de travail couplé avec un entrepôt :

L'entrepôt contient l'historique complet du projet. A la différence des SCMs classiques, où il n'y a qu'une copie centrale de cet l'historique, chaque répertoire de travail est associé avec une copie privée de cet historique. Ceci permet au développement d'évoluer parallèlement.

Le répertoire de travail contient une copie des fichiers du projet à un certain point du temps (ex : rev. 2), prêts à être édités. Parce que les tags et les fichiers ignorés sont enregistrés dans une révision, ils sont aussi inclus.

Changements commités

Lorsque vous faites un commit, l'état du répertoire de travail relatif à ses parents est enregistré comme un nouveau changeset (aussi appelé une nouvelle "revision") :

Notez ici que la révision 4 est une branche de la révision 2, qui est la révision dans le répertoire de travail. Maintenant, la révision 4 est le parent du répertoire de travail.

Révisions, Changesets, Head et Tip

Mercurial groupe les changements relatifs à de multiples fichiers dans d'uniques changesets atomiques qui forment les révisions du projet global. Chacun prend un numéro de révision séquenciel. Puisque Mercurial autorise des développement distribués et parallèles, ces numéros de révisions peuvent être différents suivant les utilisateurs. Ainsi, Mercurial assigne à chaque révision un ID de changeset global. Ces ID de changesets sont des nombre hexadécimaux de 40 digits de long, mais peut être abrégés à n'importe quel préfixe non ambigu comme "e38487"

Des branches et merges peuvent appraître dans en tout point de l'historique des révisions. Chaque branche non encore "mergée" crée un nouvel head de l'historique. Ici, les révisions 5 et 6 sont des heads. Mercurial considère la révision 6 comme étant le tip du dépôt, c'est à dire le head avec le plus grand numéro de révision. La révision 4 est un changeset de merge (merge changeset) puisqu'il possède deux changesets parents (révisions 2 et 3).

Cloner, faire des changements, Merger, envoyer (pull) et mettre à jour (upgrade)

Commençons avec un utilisateur Alice qui possède un dépôt qui ressemble à ceci :

Bob clone ce dépôt, et récupère ainsi une copie locale, complète et indépendante de l'entrepôt d'Alice ainsi qu'une vue propre de la révision "tip" d dans son répertoire de travail.

Bob peut maintenant travailler indépendamment d'Alice. Il commit deux changements e et f :

Alice apporte ensuite un changement g en parallèle à son propre dépôt, ce qui conduit à des divergences entre les entrepôt d'Alice et Bob, créant ainsi une branche :

Bob récupère (pull) ensuite le dépôt d'Alice pour synchroniser. Ceci copie tous les changements d'Alice dans l'entrepôt de Bob (ici, il n'y a qu'un seul changement : g). Notez que le répertoire de travail de Bob n'est pas changé par la récupération :

Comme le g d'Alice est le head le plus récent dans le dépôt de Bob, g est maintenant le tip.

Bob fait ensuite un merge pour combiner les derniers changements sur lesquels il était en train de travailler (f) avec le tip dans son dépôt. Maintenant, son répertoire de travail possède deux révisions parentes (f et g) :

Après avoir examiné le résultat du merge dans son répertoire de travail et avoir fait en sorte que ce merge soit parfait, Bob commit le résultat et finit avec un nouveau changeset de merge (merge changeset) h dans son entrepôt :

Maintenant, si Alice récupère (pull) depuis Bob, elle obtiendra les changement e, f et h de Bob dans son propre entrepôt :

Notez que le répertoire de travail d'Alice n'a pas été changé par la récupération. Elle doit faire un update pour synchroniser son répertoire de travail avec le changeset de merge h. Ceci change le changeset parent de s on répertoire de travail pour le changet h et met à jour les fichiers dans son répertoire de travail à la révision h.

Maintenant, Alice et Bob sont totalement synchronisés à nouveau.

Un système décentralisé

Mercurial est un système totalement décentralisé et ne possède donc pas de notion interne de dépôt central. Ainsi, les utilisateurs ont toute la liberté de créer leur propre topologie pour partager les changements (cf. communiquer les changements)) :

A la différence d'un gestionnaire de version centralisé dans lequel l'expérimentation peut être désastreuse, dans un DSCM comme Mercurial, vous avez juste à cloner et expérimenter. Si vous aimez le résultat, envoyez (push) le en retour, sinon, supprimez le dépôt cloné et testez quelque chose d'autre.

Ce que Mercurial ne peut pas faire

Beaucoup d'utilisateurs SVN/CVS espèrent héberger tous leurs projets ensemble dans un seul dépôt. Mais Mercurial n'a pas été conçu dans cet esprit. En effet, vous ne pouvez pas récupérer juste un répertoire dans un dépôt. Vous devriez donc essayer d'organiser vos projets autrement.

Si vous avez quand même absolument besoin d'héberger plusieurs projets dans une sorte de méta-dépôt, vous pouvez essayer la fonctionnalité des sous-dépôts qui ont été introduits dans Mercurial 1.3 ou l'ancienne extension Forest

Pour des instructions par l'exemple sur comment utiliser Mercurial, reportez vous au Tutorial


CategoryFrench

FrenchUnderstandingMercurial (last edited 2012-11-11 13:18:30 by abuehl)