121 votes

Comment obtenir une version spécifique d'un fichier dans Mercurial?

Je suis nouveau sur Mercurial. Tout ne peut pas trouver la bonne commande. Essayé mise à jour / checkout sans succès. J'utilise un référentiel local. Merci

163voto

djc Points 6761

Je pense que vous voulez hg revert -r<rev> <file> (cela changera ce fichier comme il était lors de la révision donnée).

89voto

Ry4an Points 56453

Comme déjà dit, revert modifie un fichier en place pour le faire correspondre à une révision antérieure. Si vous ne le souhaitez pas, vous pouvez utiliser hg cat -r revisionid filename (en remplaçant évidemment révisid et nomfichier), qui exportera le fichier sur stdout, ce qui vous permettra de rediriger n'importe où.

25voto

Omnifarious Points 25666

hg revert , en effet, de résoudre ce problème. Mais je pense que vous êtes confus au sujet d'un large éventail de choses que simplement la réponse à votre question et que vous voulez essayer de répondre de manière plus complète.

hg update est un ensemble référentiel de la commande et ne fonctionnera pas sur des fichiers individuels. C'est contrairement à la subversion svn update de cette façon. Si vous n' hg --help update vous pouvez voir que c'est le cas parce que la commande ne prend pas de fichier argument. Il peut être utilisé pour déplacer l'ensemble de votre référentiel à un instantané, mais ne peut pas être utilisé pour faire à un seul fichier.

Si vous tapez hg --help , vous voyez une liste de commandes. Elle est plutôt grande et un peu intimidant liste, mais si vous le lisez, vous trouverez cette ligne:

revert       restore individual files or directories to an earlier state

Maintenant, si vous voulez juste le dernier état à des fins de comparaison, il y a une autre commande que vous pouvez être intéressé, et que l' hg cat. Qui vous permettra d'imprimer le contenu d'un fichier à la révision. Vous pouvez rediriger le résultat dans un autre fichier. Ensuite, vous pouvez le précédent connu la bonne version de votre fichier et l'ancienne version de comparer côte-à-côte.

La raison pour laquelle Mercurial a séparé update de commande, c'est qu'il est possible de faire quelque chose dans Mercurial que c'est impossible dans la Subversion. Vous pouvez update à une version antérieure, apporter des modifications, puis les valider. Cela va créer une branche. L' update commande a pour effet de changer la révision parent du répertoire de travail actuel ainsi que l'évolution du contenu de tous les fichiers dans ce répertoire pour que les parents de la révision des versions.

Cela signifie que revert change le contenu d'un fichier (ou même de l'ensemble du référentiel si vous donnez la commande les bons arguments), mais laisse le parent révision de la copie de travail actuelle de la même.

Vous pouvez trouver la révision parent (ou des révisions dans le cas d'une fusion) de la copie de travail actuelle à l'aide de la hg parents commande.

Dans Subversion, les révisions sont strictement progression linéaire. Mercurial crée des branches à la baisse d'un chapeau, et ils sont presque aussi facile de fusionner. Révisions forme d'un DAG, pas strictement linéaire de la progression.

13voto

user2173353 Points 369

Pour extraire une révision spécifique d'un fichier spécifique, vous pouvez le faire sous Windows:

 hg cat "<FileToBeExtractedPath>" -r 9 > "<ExtractionPath>"
 

Ici, 9 est le numéro de révision.

Ou même mieux:

 hg cat "<FileToBeExtractedPath>" -r 9 -o "<ExtractionPath>"
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X