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
Je pense que vous voulez hg revert -r<rev> <file>
(cela changera le fichier tel qu'il était à la révision donnée).
Comme déjà dit, revert
modifie un fichier en place pour correspondre à une révision antérieure. Si vous ne le souhaitez pas, vous pouvez utiliser hg cat -r revisionid filename
(en remplaçant bien sûr révisid et filename), qui exportera le fichier sur stdout, ce qui permet de le rediriger n'importe où.
hg revert
résout effectivement ce problème. Mais je pense que vous avez du mal à comprendre un plus large éventail de choses que la simple 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. De cette façon, il ne ressemble pas au svn update
de Subversion. Si vous faites hg --help update
, vous constaterez qu'il en est ainsi car la commande ne prend aucun argument de fichier. Il peut être utilisé pour déplacer l'intégralité de votre référentiel vers un instantané particulier, mais pas pour un seul fichier.
Si vous tapez hg --help
, vous voyez une liste de commandes. C'est une liste assez longue 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 pourrait vous intéresser, c'est hg cat
. Cela vous permettra d’imprimer le contenu d’un fichier lors d’une révision donnée. Vous pouvez ensuite rediriger sa sortie dans un autre fichier. Ensuite, vous pouvez avoir la bonne version précédente de votre fichier et l'ancienne version à comparer côte à côte.
La raison pour laquelle Mercurial a une commande update
distincte est qu’il est possible de faire quelque chose dans Mercurial qui soit impossible dans Subversion. Vous pouvez update
dans une version antérieure, apporter des modifications, puis valider. Cela va créer une branche. La commande update
a également pour effet de modifier la révision parente du répertoire de travail actuel, ainsi que le contenu de tous les fichiers de ce répertoire par les versions de cette révision parente.
Cela signifie que revert
change le contenu d'un fichier (ou même de tout le référentiel si vous donnez les bons arguments à la commande), mais conserve la même révision de la copie parente de la copie de travail actuelle.
Vous pouvez connaître la révision parente (ou les révisions dans le cas d'une fusion) de la copie de travail en cours à l'aide de la commande hg parents
.
Dans Subversion, les révisions sont une progression strictement linéaire. Mercurial crée des branches en un tour de main et il est presque aussi facile de les fusionner. Les révisions forment un DAG et non une progression strictement linéaire.
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>"
Entré ici en essayant d'obtenir la version précédente, voici donc la commande exacte:
hg revert -r .~1 <file>