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

Je suis nouveau sur Mercurial. Juste ne peut pas trouver la bonne commande. Essayé mise à jour / checkout sans chance. J’utilise un référentiel local. Merci

Je pense que vous voulez que hg revert -r (cela changera ce fichier pour qu’il soit à la révision donnée).

Comme djc a déclaré, la modification modifie un fichier en place pour correspondre à une révision antérieure. Si vous ne le voulez pas, vous pouvez utiliser hg cat -r revisionid filename (en remplaçant bien évidemment revisionid et filename) qui affichera le fichier dans stdout, ce qui vous permettra de redirect n’importe où.

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

hg update est une commande de référentiel complète et ne fonctionnera pas sur des fichiers individuels. C’est différent de la subversion svn update de cette manière. Si vous faites hg --help update vous pouvez voir que c’est le cas car la commande ne prend aucun argument de fichier. Il peut être utilisé pour déplacer l’ensemble de votre référentiel vers un instantané particulier, mais il ne peut pas être utilisé pour le faire dans un seul fichier.

Si vous tapez hg --help vous voyez une liste de commandes. C’est une liste plutôt volumineuse et quelque peu décourageante, mais si vous la parcourez, 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 qui peut vous intéresser, et c’est hg cat . Cela vous permettra d’imprimer le contenu d’un fichier lors d’une révision particulière. Vous pouvez ensuite redirect sa sortie vers un autre fichier. Ensuite, vous pouvez comparer la version antérieure de votre fichier et l’ancienne version connues.

La raison pour laquelle Mercurial a une commande de update séparée est qu’il est possible de faire quelque chose dans Mercurial qui est impossible dans Subversion. Vous pouvez update à update vers une version antérieure, apporter des modifications, puis valider. Cela va créer une twig. La commande update a également pour effet de modifier la révision parente du répertoire de travail en cours et de modifier le contenu de tous les fichiers de ce répertoire pour les versions de cette révision parente.

Cela signifie que revert change le contenu d’un fichier (ou même le référentiel entier si vous donnez les bons arguments à la commande), mais laisse la révision parent de la copie de travail courante identique.

Vous pouvez trouver la révision parent (ou les révisions dans le cas d’une fusion) de la copie de travail en cours en utilisant la commande hg parents .

Dans Subversion, les révisions sont une progression ssortingctement linéaire. Mercurial crée des twigs à la baisse, et elles sont presque aussi faciles à fusionner. Les révisions forment un DAG, pas une progression ssortingctement linéaire.

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

 hg cat "" -r 9 > "" 

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

Ou encore mieux:

 hg cat "" -r 9 -o ""