# HG changeset patch # User William Dodé # Date 1253176233 -7200 # Node ID df8efd83cfc9c8af05e9f703fbd9bcc371c5a31c # Parent f4f740bb58beb3a75fcb1a709d29b80d1ba62f90 french : corrections on ch04, ... diff -r f4f740bb58be -r df8efd83cfc9 fr/ch04-concepts.xml --- a/fr/ch04-concepts.xml Tue Sep 15 13:43:02 2009 +0200 +++ b/fr/ch04-concepts.xml Thu Sep 17 10:30:33 2009 +0200 @@ -4,16 +4,16 @@ Derrière le décor - À la différence de beaucoup d'outils de gestion de versions, + À la différence de beaucoup d'outils de gestion de révisions, les concepts sur lesquels se base Mercurial sont assez simples pour qu'il soit facile de comprendre comment le logiciel fonctionne. - Bien que leur connaissance ne soit pas nécéssaire, je trouve utile + Bien que leur connaissance ne soit pas indispensable, je trouve utile d'avoir un modèle mental de ce qui se passe. En effet, cette compréhension m'apporte la confiance que Mercurial a été développé avec soin pour être à la fois sûr et efficace. De surcroît, - si il m'est facile de garder en tête ce que le logiciel fait lorsque + s'il m'est facile de garder en tête ce que le logiciel fait lorsque j'accompli des tâches de révision, j'aurai moins de risques d'être surpris par son comportement. @@ -29,25 +29,25 @@ Lorsque Mercurial effectue un suivi des modifications faites à un fichier, il conserve l'historique pour ce fichier dans un filelog sous forme de métadonnées. Chaque entrée - dans le filelog contient assez d'informations pour reconstituer une - révision du fichier correspondant. Les filelogs sont des fichiers + dans le filelog contient assez d'informations pour reconstituer une + révision du fichier correspondant. Les filelogs sont des fichiers stockés dans le répertoire .hg/store/data. Un filelog contient + class="directory">.hg/store/data. Un filelog contient des informations de deux types: les données de révision, et un index pour permettre à Mercurial une recherche efficace d'une révision donnée. Lorsqu'un fichier devient trop gros ou a un long - historique, son filelog se voit stocker dans un fichier de données + historique, son filelog se voit stocké dans un fichier de données (avec un suffixe .d) et un fichier index (avec un suffixe.i) distincts. La relation entre un fichier dans le répertoire de travail - et le filelog couvrant le suivi de son historique dans le dépôt est + et le filelog couvrant le suivi de son historique dans le dépôt est illustré à la figure .
Relations entre les fichiers dans le répertoire de travail et - leurs filelogs dans le dépôt + leurs filelogs dans le dépôt XXX add text @@ -59,7 +59,7 @@ Mercurial a recours à une structure nommée manifest pour rassembler les informations sur - les fichiers dont il gère le suivi. Chaque entrée dans ce manifest + les fichiers dont il gère le suivi. Chaque entrée dans ce manifest contient des informations sur les fichiers présents dans une révision donnée. Une entrée enregistre la liste des fichiers faisant partie de la révision, la version de chaque fichier, et quelques autres @@ -67,31 +67,31 @@ - Enregistrer les informations des changeset + Enregistrer les informations des <quote>changesets</quote> Le changelog contient les - informations sur chaque changeset. Chaque révision enregistre qui a - committé un changement, le commentaire du changeset, d'autres - morceaux d'information relatives au changeset et la révision du - manifest à utiliser. + informations sur chaque changeset. Chaque révision enregistre qui a + committé un changement, le commentaire du changeset, d'autres + morceaux d'information relatives au changeset et la révision du + manifest à utiliser. Relations entre les révisions - A l'intérieur d'un changelog, d'un manifest, ou d'un - filelog, chaque révision enregistre un pointeur vers son parent + A l'intérieur d'un changelog, d'un manifest, ou d'un + filelog, chaque révision enregistre un pointeur vers son parent immédiat (ou à ses deux parents s'il s'agit d'une révision correspondant à une fusion (merge)). Comme mentionné plus haut, il y a aussi des relations entre les révisions à travers ces structures, qui sont de nature hiérarchique. - Pour chaque changeset dans un dépôt, il y a exactement - une révision stockée dans le changelog. Chaque révision du changelog - contient un pointeur vers une unique révision du manifest. Une - révision du manifeste garde un pointeur vers une unique révision pour - chaque filelog suivi lorsque le changeset est créé. Ces relations + Pour chaque changeset dans un dépôt, il y a exactement + une révision stockée dans le changelog. Chaque révision du changelog + contient un pointeur vers une unique révision du manifest. Une + révision du manifest garde un pointeur vers une unique révision pour + chaque filelog suivi lorsque le changeset est créé. Ces relations sont illustrées dans .
@@ -102,16 +102,16 @@
- Comme l'illustration le monde, il + Comme l'illustration le montre, il n'y a pas de relation - un à un entre les révisions dans un changelog, - manifest ou filelog. Si un fichier que Mercurial suit n'a pas changé - entre deux changesets, l'entrée pour ce fichier dans les deux - révisions du manifest pointera vers la même révision de son filelog + un à un entre les révisions dans un changelog, + manifest ou filelog. Si un fichier que Mercurial suit n'a pas changé + entre deux changesets, l'entrée pour ce fichier dans les deux + révisions du manifest pointera vers la même révision de son filelog Il est possible (bien qu'inhabituel) - qu'un manifest reste le même entre deux changesets, auquel cas - l'entrée du changelog pour ces changesets pointera vers la même - révision du manifest. + qu'un manifest reste le même entre deux changesets, auquel cas + l'entrée du changelog pour ces changesets pointera vers la même + révision du manifest. .
@@ -119,22 +119,22 @@ Stockage sûr et efficace - Les fondements des changelogs, des manifests et des - filelogs sont fournis par une unique structure appelée le + Les fondements des changelogs, des manifests et des + filelogs sont fournis par une unique structure appelée le revlog. stockage efficace - Le revlog fournit un stockage efficace des révision en + Le revlog fournit un stockage efficace des révisions en utilisant un mécanisme delta. A lieu de stocker une copie complète d'un fichier à chaque révision, il stocke les - changements requis pour transformer une révision plus ancienne en la + changements requis pour transformer une révision plus ancienne en une nouvelle révision. Pour plusieurs type de données, ces deltas sont typiquement une fraction de pourcentage de la taille de la copie complète d'un fichier. - Certains systèmes de gestion de révisions obselètes + Certains systèmes de gestion de révisions obsolètes peuvent seulement travailler avec les deltas de fichiers texte. Il doivent d'ailleurs stocker les fichiers binaires comme des images complètes ou encodées avec une représentation texte, chacune de ces @@ -147,15 +147,15 @@ Opérations sûres Mercurial empile toujours les - données à la fin d'un fichier revlog. Il ne modifie jamais la section - d'un fichier après qu'il l'ait écrite. C'est à la foit plus robuste + données à la fin d'un fichier revlog. Il ne modifie jamais la section + d'un fichier après qu'il l'ait écrite. C'est à la fois plus robuste et efficace que les schémas qui ont besoin de modifier ou réécrire les données. - De plus, Mercurial traite chaque écriture comme une + De plus, Mercurial traite chaque écriture comme la partie d'une transaction qui peut comprendre plusieurs fichiers. Une transaction est atomique - : spot la transaction entière réussit et ses effets sont tous + : soit la transaction entière réussie ses effets sont tous visibles aux lecteurs en une étape, soit la totalité est annulée. Cette garantie de l'atomicité signifie que si vous exécutez deux copies de Mercurial, où une lit les données et l'autre les écrit, le @@ -176,16 +176,16 @@ récupération inefficace La plupart des systèmes de gestion de révisions stockent le contenu d'une révision comme une série incrémentale de modifications faites à un - snapshot. (Certains basent le snapshot sur la plus + snapshot. (Certains basent le snapshot sur la plus vieille révision, d'autres sur la plus récente.) Pour reconstruire - une révision spécifique, vous devez d'abord lire le snapshot, et - ensuite toutes les révisions entre le snapshot et votre révision + une révision spécifique, vous devez d'abord lire le snapshot, et + ensuite toutes les révisions entre le snapshot et votre révision cible. Plus vous avez d'historique accumulé dans un fichier, plus de révisions vous avez à lire, d'où la longueur que cela prend à reconstruire une révision particulière.
- Snapshot d'un revlog, avec des deltas incrémentaux + <quote>Snapshot</quote> d'un <quote>revlog</quote>, avec des deltas incrémentaux XXX add text @@ -195,15 +195,15 @@ L'inovation que Mercurial apporte à ce problème est simple mais effective. Une fois que la quantité cumulée de deltas d'informations stockées depuis le dernier snapshot excède un seuil - fixé, il stock un nouveau snapshot (compréssé biensûr), plutôt qu'un + fixé, il stocke un nouveau snapshot (compressé bien sûr), plutôt qu'un nouveau delta. Ceci rend possible la reconstruction de toute révision d'un fichier rapidement. Cette approche fonctionne si bien que depuis, elle a été copiée par plusieurs autres systèmes de gestion de révisions. illustre - l'idée. Dans une entrée d'un fichier d'index de revlog, Mercurial - stock l'intervale des entrées depuis le fichier de données qu'il doit + l'idée. Dans une entrée d'un fichier d'index de revlog, Mercurial + stocke l'intervalle des entrées depuis le fichier de données qu'il doit lire pour reconstruire une révision particulière. @@ -232,57 +232,57 @@ Les hash fournissent plus qu'un bon moyen de vérification contre la corruption ; il sont aussi utilisés comme - identifiants pour les révisions. Le hash d'identification d'un - changeset que vous voyez comme utilisateur final proviennent des - révisions du changelog. Bien que les filelogs et le manifest - utilisent aussi des hash, Mercurial ne les utilise qu'en arrière + identifiants pour les révisions. Les hashs d'identifications d'un + changeset que vous voyez comme utilisateur final proviennent des + révisions du changelog. Bien que les filelogs et le manifest + utilisent aussi des hashs, Mercurial ne les utilise qu'en arrière plan. - Mercurial vérifie que les hash sont corrects lorsqu'il + Mercurial vérifie que les hashs sont corrects lorsqu'il récupère les révisions de fichiers et lorsqu'il récupère (pull) les changements d'un autre dépôt. S'il rencontre un problème d'intégrité, - il se pleindra et arrêtera tout ce qu'il est en train de faire. + il se plaindra et arrêtera tout ce qu'il est en train de faire. En plus de l'effet qu'il a sur l'efficacité des - récupérations, l'utilisation de Mercurial de snapshots périodiques + récupérations, l'utilisation par Mercurial de snapshots périodiques fait qu'il est plus robuste contre la corruption partielle de - données. Si un revlog devient partiellement corrompu à cause d'une + données. Si un revlog devient partiellement corrompu à cause d'une erreur matérielle ou d'un bug système, il est souvent possible de reconstruire certaines ou la plupart des révisions à partir des - sections non corrompues du revlog, avant et après la section + sections non corrompues du revlog, avant et après la section corrompue. Ceci ne serait pas possible à partir d'un modèle de - stockage delta seul. + stockage de deltas seul. Historique des révisions, branches et fusions (merge) - Chaque entrée dans un revlog Mercurial connaît - l'identité de l'ancètre immédiat de la révision, habituellement référé + Chaque entrée dans un revlog Mercurial connaît + l'identité de l'ancêtre immédiat de la révision, habituellement désignée comme son parent. En fait, une révision contient de la place pour non pas un parent, mais deux. Mercurial utilise un - hash spécial, appelé le null ID pour représenter l'idée - qu'il n'y a pas de parent ici. Ce hash est simplement + hash spécial, appelé le null ID pour représenter l'idée + qu'il n'y a pas de parent ici. Ce hash est simplement une chaîne de zéros. Dans , vous pouvez - voir un exemple de la structure conceptuelle d'un revlog. Les filelogs, - manifests et changelogs ont tous cette même structure ; ils difèrent + voir un exemple de la structure conceptuelle d'un revlog. Les filelogs, + manifests et changelogs ont tous cette même structure ; ils diffèrent simplement dans le type de donnée stockée dans chaque delta ou - snapshot. - - La première révision d'un revlog (au bas de l'image) a - le null ID dans chacune de ses cases parent. Pour une révision + snapshot. + + La première révision d'un revlog (au bas de l'image) a + le null ID dans chacune de ses cases parent. Pour une révision normale, sa première case parent contient l'ID de sa - révision parent et la seconde contient le null ID, indiquant que cette + révision parent et la seconde contient le null ID, indiquant que cette révision n'a qu'un seul vrai parent. Si deux révisions ont le même parent, il s'agit de branches. Une révision qui représente une fusion (merge) entre deux branches a deux identifiants de révision normaux dans ses cases parents.
- The conceptual structure of a revlog + Le concept de la structure d'un <quote>revlog</quote> XXX add text @@ -293,48 +293,48 @@ Le répertoire de travail - Dans un répertoire de travail, Mercurial stock une image - des fichiers du dépôt à un changeset particulier. + Dans un répertoire de travail, Mercurial stocke une image + des fichiers du dépôt à un changeset particulier. Le répertoire de travail sait quel - changeset il contient. Lorsque vous mettez à jour (update) le - répertoire de travail à un certain changeset, Mercurial regarde la - révision appropriée du manifest pour trouver quels fichier il suivait - au moment où le changeset a été committé, et quelle révision de chaque + changeset il contient. Lorsque vous mettez à jour (update) le + répertoire de travail à un certain changeset, Mercurial regarde la + révision appropriée du manifest pour trouver quels fichiers il suivait + au moment où le changeset a été committé, et quelle révision de chaque fichier était alors courante. Il recrée ensuite une copie de chacun de - ces fichiers, avec le même contenu qu'ils avaient lorsque le changeset - a été committé. + ces fichiers, avec le même contenu qu'ils avaient lorsque le changeset + a été committé. La structure spéciale dirstate contient la connaissance de Mercurial sur le répertoire de travail. Elle est maintenue par un fichier appelé .hg/dirstate dans un dépôt. Les détails du - dirstate sont le changeset vers lequel le répertoire de travail se met + dirstate sont le changeset vers lequel le répertoire de travail se met à jour (update), et tous les fichiers que Mercurial suit dans le - répertoire de travail. Il permet aussi à Mercurial se connaître - rapidement les fichiers modifiés, en enregistrant leurs heures de - dernière modification et leur taille. - - Puisqu'une révision de revlog a des emplacements pour + répertoire de travail. Il permet aussi à Mercurial de connaître + rapidement les fichiers modifiés, en enregistrant l'heure de + dernière modification et la taille de chacun. + + Puisqu'une révision de revlog a des emplacements pour deux parents et peut représenter aussi bien une révision normale (avec - un parent) ou une fusion de deux révisions anciennes, le dirstate a des + un parent) ou une fusion de deux révisions anciennes, le dirstate a des emplacements pour deux parents. Lorsque vous utilisez la commande - hg update, le changeset que vous + hg update, le changeset que vous mettez à jour est stocké dans l'emplacement du premier - parent, et le null ID l'est dans le second. Lorsque vous + parent, et le null ID l'est dans le second. Lorsque vous utilisez la commande hg merge avec un autre changeset, le premier parent reste inchangé, et le second est - rempli avec le changeset à partir duquel vous êtes en train de + rempli avec le changeset à partir duquel vous êtes en train de fusionner. La commande hg parents vous donne les parents du dirstate. - Que se passe-t-il lorsque vous committez - - Le dirstate stock les informations sur les parents - pour plusqu'un simple livre de stockage. Mercurial utilise les - parents du distate comme les parents d'un nouveau - changeset lorsque vous committez. + Que se passe-t'il lorsque vous <quote>committez</quote> + + Le dirstate stocke les informations sur les parents + pour plus qu'un simple livre de stockage. Mercurial utilise les + parents du distate comme les parents d'un nouveau + changeset lorsque vous committez.
Le répertoire de travail peut avoir deux parents @@ -344,13 +344,13 @@
montre l'état - normal d'un répertoire de travail, où il n'y a qu'un seul changeset - comme parent. Ce changeset est le tip, le - changeset le plus récent dans le dépôt n'a pas d'enfant. + normal d'un répertoire de travail, où il n'y a qu'un seul changeset + comme parent. Ce changeset est le tip, le + changeset le plus récent dans le dépôt n'a pas d'enfant.
Le répertoire de travail gagne de nouveaux parents après un - commit + commit @@ -358,19 +358,19 @@
- Il est utile de penser du répertoire de travail qu'il - est le changeset que je vais committer. Chaque fichier - que vous dites à mercurial d'ajouter, de supprimer, de renommer ou de - copier va être reflété dasn ce changeset, tout comme les + On peut se représenter le répertoire de travail comme + le changeset que je vais committer. Chaque fichier + que vous demandez à Mercurial d'ajouter, de supprimer, de renommer ou de + copier va être intégré dans ce changeset, tout comme les modifications de n'importe quel fichier que Mercurial est déjà en - train de suite ; le nouveau changeset aura les mêmes parents que le + train de suivre ; le nouveau changeset aura les mêmes parents que le répertoire de travail. Après un commit, Mercurial va mettre à jour les - parents du répertoire de travail, ainsi, le premier parents est l'ID - du nouveau changeset, et le second, le nullID. Ceci est illustré dans + parents du répertoire de travail, ainsi, le premier parent est l'ID + du nouveau changeset, et le second, le null ID. Ceci est illustré dans . Mercurial ne touche - à aucun des fichiers du répertoire de travail lorsque vous committez + à aucun des fichiers du répertoire de travail lorsque vous committez ; il modifie simplement le dirstate pour noter ses nouveaux parents. @@ -378,19 +378,19 @@ Création d'une nouvelle <quote>head</quote> - Il est parfaitement normal de faire un update du - répertoire de travail à un changeset autre que le tip courant. Par - exemple, vous pourriez vouloir savoir ce à quoi votre projet - ressemblait le dernier Mardi, ou regarder le changeset qui a + Il est parfaitement normal de faire un update du + répertoire de travail à un changeset autre que le tip courant. Par + exemple, vous pourriez vouloir savoir à quoi votre projet + ressemblait mardi dernier, ou regarder le changeset qui a introduit un bug. Dans des cas comme ça, la chose naturelle à faire - est de faire un update du répertoire de travail au changeset qui vous + est de faire un update du répertoire de travail au changeset qui vous intéresse, et ensuite d'en examiner les fichiers pour regarder leurs - contenus comme ils l'étaient lorsque vous avez commité ce changeset. + contenus comme ils l'étaient lorsque vous avez commité ce changeset. L'effet de ceci est montré dans .
- Le répertoire de travail, "updaté" pour un changeset plus + <title>Le répertoire de travail, <quote>updaté</quote> pour un <quote>changeset</quote> plus ancien @@ -398,19 +398,19 @@
- En ayant fait un update du répertoire de travail vers - un changeset plus ancien, qu'est-ce qu'il se passe si vous faites des - changements et ensuite committez ? Mercurial se comporte comme je + En ayant fait un update du répertoire de travail vers + un changeset plus ancien, que se passe-t'il si vous faites des + changements et ensuite committez ? Mercurial se comporte comme je l'ai fait remarqué plus haut. Les parents du répertoire de travail - deviennent les parents du nouveau changeset. Ce nouveau changeset n'a - pas d'enfant, donc il devient le nouveau tip. Le dépôt contient - maintenant deux changesets qui n'ont pas d'enfant ; on appelle ceci - des heads. Vous pouvez voir la structire que + deviennent les parents du nouveau changeset. Ce nouveau changeset n'a + pas d'enfant, donc il devient le nouveau tip. Le dépôt contient + maintenant deux changesets qui n'ont pas d'enfant ; on appelle ceci + des heads. Vous pouvez voir la structure que cela crée dans .
- Après un commit fait pendant la synchronisation avec un ancien - changeset + Après un <quote>commit</quote> fait pendant la synchronisation avec un ancien + <quote>changeset</quote> XXX add text @@ -422,19 +422,19 @@ à l'esprit une erreur commune, qui est d'utiliser la commande hg pull sans aucune option. Par défaut, la commande hg - pull ne fait pas d'update sur le + pull ne fait pas d'update sur le répertoire de travail, ainsi, vous allez récupérer les nouveaux changesets dans votre dépôt, mais le répertoire de travail va - rester synchroniser au même changeset qu'il l'était avant le pull. - Si vous faites des changements et committez ensuite, vous allez - créer une nouvelle head puisque votre répertoire de travail n'est - pas synchronisé à ce que le tip actuel est. Pour combiner les - opérations d'un pull suivi d'un update, exécutez run hg + rester synchronisé au même changeset qu'il l'était avant le pull. + Si vous faites des changements et committez ensuite, vous allez + créer une nouvelle head puisque votre répertoire de travail n'est + pas synchronisé au tip actuel. Pour combiner les + opérations d'un pull suivi d'un update, exécutez hg pull -u. Je place le mot erreur entre guillemets parce que tous ce dont vous avez besoin de faire pour - rectifier la situation où vous avez créé une nouvelle head par + rectifier la situation où vous avez créé une nouvelle head par accident est un hg merge suivi d'un hg commit. En d'autres mots, ceci n'a presque jamais de conséquences négatives ; il s'agit juste @@ -450,11 +450,11 @@ Lorsque vous exécutez la commande hg merge, Mercurial laisse le premier parent du répertoire de travail inchangé et fixe le second au - changeset avec lequel vous fusionnez (merge), comme montré dans changeset avec lequel vous fusionnez (merge), comme montré dans .
- Fusionner (merge) deux heads + Fusionner (merge) deux <quote>heads</quote> XXX add text @@ -462,28 +462,28 @@
Mercurial doit aussi modifier le répertoire de - travail pour fusionner les fichiers gérés dans les deux changesets. + travail pour fusionner les fichiers gérés dans les deux changesets. Un peu simplifié, le processus de fusion fonctionne comme ça : pour - chaque fichier dans le manifest de chaque changeset. + chaque fichier dans le manifest de chaque changeset.
- Si aucun changeset n'a modifié un fichier, + Si aucun changeset n'a modifié un fichier, ne rien faire avec ce fichier. - Si un changeset a modifié un fichier et + Si un changeset a modifié un fichier et que l'autre ne l'a pas fait, créer une copie modifiée du fichier dans le répertoire de travail. - Si un changeset a modifié un fichier, et + Si un changeset a modifié un fichier, et que l'autre ne l'a pas fait (ou l'a supprimé), supprimer le fichier du répertoire de travail. - Si un changeset a supprimé un fichier, + Si un changeset a supprimé un fichier, mais que l'autre a modifié le fichier, demander à l'utilisateur quoi faire : garder le fichier modifié ou le supprimer ? - Si chacun des chengeset a modifié un + Si chacun des changeset a modifié un fichier, invoquer le programme externe de fusion pour choisir les nouveaux contenus pour le fichier fusionné. Ceci peut demander des entrées de l'utilisateur. - Si un changeset a modifié un fichier, et + Si un changeset a modifié un fichier, et que l'autre a renommé ou copié le fichier, être sûr que les changements suivent le nouveau nom du fichier. @@ -496,22 +496,22 @@ besoin d'entrées pour résoudre un conflit. Lorsque vous pensez à ce qu'il se passe lorsque vous - committez après un merge, une fois encore, le répertoire de travail + committez après un merge, une fois encore, le répertoire de travail est le changeset que je suis sur le point de committer. Après que la commande hg merge ait terminé, le répertoire de travail a deux parents ; ceux ci vont devenir les parents du nouveau - changeset. + changeset. Mercurial vous permet d'exécuter de multiples fusions, - mais vous devez committer le résultat de chaque fusion individuelle - comme vous avancez. Ceci est nécessaire puisque Mercurial ne stock + mais vous devez committer le résultat de chaque fusion individuellement + au fur et à mesure. Ceci est nécessaire puisque Mercurial ne stocke que deux parents pour chaque révision et le répertoire de travail. - Alors qu'il serait techniquement faisble de fusionner de multiples - changesets en même temps, Mercurial interdit cette simplicité. Avec - des fusions multplus, les risques de confision utilisateur, de - conflits néfastes de résolutions, et faire une pagaille d'une fusion - grossiraient intollérablement. + Alors qu'il serait techniquement faisable de fusionner de multiples + changesets en même temps, Mercurial interdit cette simplicité. Avec + des fusions multiples, les risques de confusion pour l'utilisateur, de + conflits de résolutions, et de pagaille dans les fusions + augmenteraient de façon Intolérable. @@ -519,17 +519,17 @@ Fusions et renommages Un nombre surprenant de systèmes de gestion de - révision fait peu ou pas attention à un nom au + révisions fait peu ou pas attention à un nom au cours du temps. Par exemple, il était habituel que si un fichier était renommé d'un coté de la fusion, les changements à partir de l'autre coté étaient supprimés silencieusement. Mercurial enregistre les metadata lorsque vous lui - dite d'exécuter un renommage ou une copie. Il utilise ces metadata + dite d'exécuter un renommage ou une copie. Il utilise ces metadatas durant une fusion pour faire les bonnes choses dans le cas d'un - merge. Par exemple, si je renomme un fichier et que vous l'éditez + merge. Par exemple, si je renomme un fichier et que vous l'éditez sans le renommer, lorsque l'on fusionne, le fichier sera renommé et - aura les éditions appliquées. + aura les changements appliqués. @@ -537,24 +537,24 @@ D'autres fonctionnalités intéressantes - Dans les sections au dessus, j'ai tenté de mettre + Dans les sections au-dessus, j'ai tenté de mettre l'accent sur certains aspects importants du design de Mercurial pour illustrer l'attention particulière qui a été portée à la fiabilité et à - la performance.Cependant, l'attention aux détails ne s'arrête pas ici. + la performance. Cependant, l'attention aux détails ne s'arrête pas ici. Il y a de nombreux aspects sur la construction de Mercurial que je - trouve personnellement intéressante. Je détaillerai quelques un d'eux - ici, séparément des éléments du big ticket ci dessus, + trouve personnellement intéressante. J'en détaillerai quelques-uns + ici, séparément des éléments du big ticket ci-dessus, ainsi, si vous êtes intéressés, vous pourrez avoir une meilleure idée - de la quantité de pensées qu'il y a derrière un système bien - défini. + de la quantité d'ingéniosité qu'il y a derrière un système bien + conçu. Compression élégante Lorsque cela est approprié, Mercurial stocke les - snapshots et deltas sous une forme compressée. Il le fait en - essayant toujours de compression un snapshot ou - un delta, mais en ne stockant la version compression que si celle ci + snapshots et deltas sous une forme compressée. Il le fait en + essayant toujours de compresser un snapshot ou + un delta, mais en ne stockant la version compressée que si celle-ci est plus petite que la version non compressée. Ceci signifie que Mercurial fait la bonne @@ -569,8 +569,8 @@ sont habituellement plus gros que les snapshots du fichier, et Mercurial fait à nouveau la bonne chose dans ces cas. Il trouve qu'un delta dépasse le seuil auquel il devrait stocker un - snapshot complet du ficheir, alors il stocke le snapshot, en gagnant - encore de la place en comparaison à une approche naïve delta + snapshot complet du fichier, alors il stocke le snapshot, en gagnant + encore de la place en comparaison d'une approche naïve avec un delta seulement. @@ -580,29 +580,29 @@ Mercurial utilise l'algorithme de compression deflate (le même que celui utilisé pour le format d'archive populaire zip), qui est un bon - comprimis entre la vitesse et le taux de compression. Cependant, + compromis entre la vitesse et le taux de compression. Cependant, lors de la transmission d'une révision de données par une connexion réseau, Mercurial décompresse les données de révision compressées. - Si la connexion est au dessus de HTTP, mercurial + Si la connexion passe par HTTP, Mercurial recompresse le flux entier de données en utilisant un algorithme de compression qui donne un meilleur taux de compression (l'algorithme - Burrows-Wheeler utilisé principalement par le package de + Burrows-Wheeler utilisé principalement par le logiciel de compression bzip2). Cette combinaison de l'algorithme et de compression du flux entier (plutôt que pour une - révision à la fois) réduit substanciellement le nombre de bits qui - sont transférés, résultant dans une performance réseau accrue sur + révision à la fois) réduit substantiellement le nombre de bits qui + sont transférés, résultant en une performance réseau accrue sur la plupart des supports. - Si la connexion est au dessus de + Si la connexion passe par ssh, Mercurial ne recompresse pas le flux puisque ssh peut déjà le faire par lui même. Vous pouvez demander à Mercurial de toujours utiliser la compression ssh en éditant le fichier - .hgrc de votre répertoire personnale comme ci - dessous. + .hgrc de votre répertoire personnel comme ci-dessous. + [ui] ssh = ssh -C @@ -612,76 +612,76 @@ Ordres de Lecture/Écriture et atomicité - Ajouter à la fin des fichiers n'est pas toute - l'histoire lorsque l'on cherche à garantir que le lecteur ne verra + L'histoire ne se résume pas à ajouter à la fin des fichiers + lorsque l'on cherche à garantir que le lecteur ne verra pas qu'une écriture partielle. Si vous relisez , les révisions dans le changelog - pointent vers les révisions dans le manifest, et les révisions du - manifest pointent vers les révisions du filelog. Cette hiérarchie est + linkend="fig:concepts:metadata"/>, les révisions dans le changelog + pointent vers les révisions dans le manifest, et les révisions du + manifest pointent vers les révisions du filelog. Cette hiérarchie est délibérée. - L'écriture commence une transaction en écrivant dans - le filelog et dans les données du manifest, et n'écrit aucune donnée - changelog tant que ce n'est pas terminé. La lecture commence en - lisant les données du changelog, puis les données du manifest, et - enfin les données du filelog. + L'écriture commence par une transaction en écrivant dans + le filelog et dans les données du manifest, et n'écrit aucune donnée + du changelog tant que ce n'est pas terminé. La lecture commence en + lisant les données du changelog, puis les données du manifest, et + enfin les données du filelog. Puisque que l'écriture ne finit pas d'écrire les - données du filelog et du manifest avant d'écrire dans le changelog, - la lecture ne verra jamais un pointeur vers une révision du manifest - partiellement écrite à partir du changelog, et ne lira jamais un - pointeur vers une révision du filelog partiellement écrite dans le - manifest. + données du filelog et du manifest avant d'écrire dans le changelog, + la lecture ne verra jamais un pointeur vers une révision du manifest + partiellement écrite à partir du changelog, et ne lira jamais un + pointeur vers une révision du filelog partiellement écrite dans le + manifest. Accès concurrent La garantie de l'ordre de lecture/écriture et - de l'atomicite signifie que Mercurial n'a jamais besoin de poser de + de l'atomicité signifie que Mercurial n'a jamais besoin de poser de lock sur un dépôt lorsqu'il lit des données, même si le dépôt est en train d'être écrit au même moment que la - lecture a lieue. Ceci a un grand impact sur la fiabilité ; vous + lecture a lieu. Ceci a un grand impact sur la fiabilité ; vous pouvez avoir un nombre arbitraire de processus Mercurial qui lisent - dans risque en même temps les données d'un dépôt, peu importe s'il + sans risque les données d'un dépôt en même temps, peu importe s'il est en train d'être lu ou non. La nature sans lock de la lecture signifie que si vous partagez un dépôt sur un système multi-utilisateurs, vous n'avez pas besoin de donner aux autres utilisateurs locaux la permission d'écrire sur - votre dépôt pour qu'ils soient capable de faire un clone ou un pull + votre dépôt pour qu'ils soient capable de faire un clone ou un pull des changements à partir de celui ci ; ils ont seulement besoin de la permission en lecture. (Il ne s'agit pas d'une - fonctionnalité commune à travers les systèmes de gestion de révision, - donc ne prenez pas ça pour garanti ! La plupart ont besoin que les + fonctionnalité commune à travers les systèmes de gestion de révisions, + donc ne prenez pas ça pour garantie ! La plupart ont besoin que les lecteurs soient capables de mettre un lock sur le dépôt pour y accéder en toute sécurité, et ceci demande des permissions en - écriture, sur au moins un dépertoire, ce qui provoque biensûr toutes + écriture, sur au moins un répertoire, ce qui provoque bien sûr toutes sortes de problèmes néfastes et ennuyants relatifs à la sécurité et à l'administration.) - Mercurial utilise des locs pour assurer qu'un seul + Mercurial utilise des locks pour assurer qu'un seul processus peut écrire dans le dépôt à un moment donné (le mécanisme - de lock est sûr, même sur des systèmes de fichiers qui sont connus - pour être hostiles aux locks, comme NFS). Si un dépôt dispose d'un - lock, un processus qui cherche à écrire va attendre un peu avant de - retenter pour voir si le dépôt perd son lock, mais le dépôt garde - trop longtemps son lock, le processus qui tente d'écrire va expirer - (time out) après un moment. Celà veut dire par exemple que vous - scripts lancés quotidiennement n'attendront pas toujours et boucler - si un système crashait sans avertissement, par exemple. (Oui, le + de lock est sûr, même sur des systèmes de fichiers qui sont connus + pour être hostiles aux locks, comme NFS). Si un dépôt dispose d'un + lock, un processus qui cherche à écrire va attendre un peu avant de + retenter pour voir si le dépôt perd son lock, mais si le dépôt garde + trop longtemps son lock, le processus qui tente d'écrire va expirer + (time out) après un moment. Cela veut dire par exemple que vos + scripts lancés quotidiennement n'attendront pas toujours et boucleront + si un système plantait sans avertissement, par exemple. (Oui, le timeout est configurable, de zéro à l'infini.) - Accès dirstate sûr - - Comme avec les données de révision, Mercurial ne prend pas - de lock pour lire le fichier dirstate ; il n'acquier pas un lock pour - y écrire. Pour empécher la possibilité de lire une copie partiellement - écrite du fichier dirstate, Mercurial écrit à un fichier avec un nom - unique dans le même répertoire que le fichier dirstate, ensuite renomme + Accès <quote>dirstate</quote> sûr + + Comme avec les données de révision, Mercurial n'utilise pas + de lock pour lire le fichier dirstate ; il n'acquiert pas un lock pour + y écrire. Pour empêcher la possibilité de lire une copie partiellement + écrite du fichier dirstate, Mercurial écrit sur un fichier avec un nom + unique dans le même répertoire que le fichier dirstate, ensuite renomme le fichier temporaire automatiquement en dirstate. Le fichier nommé dirstate est ainsi garanti d'être écrit totalement, et non partiellement. @@ -689,22 +689,22 @@ - Empécher les recherches + Empêcher les recherches L'absence de recherche sur les têtes de disques est critique pour la performance de Mercurial, puisque toute recherche est beaucoup plus coûteuse comparativement à une grosse opération de lecture. - C'est pour ça, par exemple, que le dirstate est stocké - dans un unique fichier. S'il y avait eu un dirstate par répertoire - que Mercurial suivait, le disque aurait recherché une fois par - répertoire. Au lieu de ça, Mercurial lit entièrement un unique - fichier, en une étape. + C'est pour ça, par exemple, que le dirstate est stocké + dans un fichier unique. S'il y avait eu un dirstate par répertoire + que Mercurial suivrait, le disque aurait recherché une fois par + répertoire. Au lieu de ça, Mercurial lit entièrement un + fichier unique, en une étape. Mercurial utilise aussi un schéma copie à l'écriture lorsqu'il clone un dépôt sur un stockage local. - Au lieu de copier chaque fichier revlog depuis l'ancien dépôt vers le + Au lieu de copier chaque fichier revlog depuis l'ancien dépôt vers le nouveau dépôt, il crée un lien physique, qui est le plus court chemin pour dire Ces deux noms pointent vers le même fichier. Lorsque Mercurial est sur le point d'écrire @@ -714,22 +714,22 @@ du fichier qui est privée à ce dépôt. Quelques développeurs de systèmes de gestion de - révision ont montré que cette idée de faire une copie privée complète - d'un fichier n'est pas vraiment efficace dans son utilisation du + révisions ont montré que cette idée de faire une copie privée complète + d'un fichier n'est pas vraiment efficace au niveau du stockage. Bien que ce soit vrai, le stockage est peu onéreux, et cette méthode donne la plus grande performance lorsque l'on reporte la plupart des journalisations au système d'exploitation. Un schéma alternatif réduirait certainement la performance tout en augmentant - la complexité du logiciel, mais la vitesse et la simplicité sont els - clefs du sentiment de l'utilisation + la complexité du logiciel, mais la vitesse et la simplicité sont les + clefs du confort de l'utilisation quotidienne. - Autres contenus du dirstate - - Puisque Mercurial ne vous force pas à dire lorsque - vous modifiez un fichier, il utilise le dirstate pour stocker + Autres contenus du <quote>dirstate</quote> + + Puisque Mercurial ne vous force pas à signaler que + vous modifiez un fichier, il utilise le dirstate pour stocker certaines informations supplémentaires pour déterminer efficacement si vous avez ou non modifié un fichier. Pour chaque fichier du répertoire de travail, il stocke l'heure à laquelle il a été modifié, @@ -739,22 +739,22 @@ role="hg-cmd">hg add
, hg remove, hg rename ou hg copy sur des fichiers, Mercurial - met à jour le dirstate afin de savoir quoi faire lorsque vous - effectuez un commit. - - Le dirstate aide Mercurial à vérifier efficacement le - status des fichiers dans un dépôt. + met à jour le dirstate afin de savoir quoi faire lorsque vous + effectuez un commit. + + Le dirstate aide Mercurial à vérifier efficacement le + statut des fichiers dans un dépôt. Lorsque Mercurial vérifie l'état d'un fichier du répertoire de travail, il compare d'abord la date de dernière modification du fichier avec celle enregistrée dans le - dirstate qui correspond à Mercurial a écrit en dernier sur ce + dirstate qui correspond à celle que Mercurial a écrit en dernier sur ce fichier. Si le temps de dernière modification correspond au temps où Mercurial a écrit le fichier, celui ci n'a pas été modifié, donc mercurial n'a pas besoin de revérifier. - Si la taille du fichier a changé, celui - ci a été modifié. Si la date de modification a changé mais que la + Si la taille du fichier a changé, celui-ci + a été modifié. Si la date de modification a changé mais que la taille est restée inchangée, seulement à ce moment là Mercurial doit vérifier le contenu du fichier pour savoir s'il a été modifié.