Je suis nouveau sur Mercurial. Impossible de trouver la bonne commande. Mise à jour / paiement essayé sans chance. J'utilise le référentiel local. Merci
Je suis nouveau sur Mercurial. Impossible de trouver la bonne commande. Mise à jour / paiement essayé sans chance. J'utilise le référentiel local. Merci
Réponses:
Je pense que vous voulez hg revert -r<rev> <file>
(cela changera ce fichier pour qu'il soit tel qu'il était à la révision donnée).
Comme djc l'a dit, revert
modifie un fichier en place pour correspondre à une révision précédente. Si vous ne voulez pas qu'il soit en place, vous pouvez utiliser hg cat -r revisionid filename
(en remplaçant bien sûr revisionid et filename) qui produira le fichier vers stdout, adapté pour rediriger n'importe où vous le souhaitez.
hg revert
résout effectivement ce problème. Mais je pense que vous êtes confus sur 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. C'est différent de la subversion svn update
de cette manière. Si vous le 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 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 assez longue et quelque peu intimidante, mais si vous la 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 qui pourrait vous intéresser, et c'est hg cat
. Cela vous permettra d'imprimer le contenu d'un fichier à une révision particulière. Vous pouvez ensuite rediriger sa sortie dans un autre fichier. Ensuite, vous pouvez avoir la bonne version précédente connue de votre fichier et l'ancienne version pour comparer côte à côte.
La raison pour laquelle Mercurial a une update
commande séparée est qu'il est possible de faire quelque chose dans Mercurial qui est impossible dans Subversion. Vous pouvez update
utiliser une version antérieure, apporter des modifications, puis valider. Cela créera une branche. La update
commande a également pour effet de changer la révision parente du répertoire de travail courant et de changer le contenu de tous les fichiers de ce répertoire vers les versions de cette révision parente.
Cela signifie que revert
change le contenu d'un fichier (ou même l'ensemble du référentiel si vous donnez à la commande les bons arguments) mais laisse la révision parente de la copie de travail actuelle inchangée.
Vous pouvez trouver la révision parente (ou les révisions dans le cas d'une fusion) de la copie de travail actuelle en utilisant la hg parents
commande.
Dans Subversion, les révisions sont une progression strictement linéaire. Mercurial crée des branches en un clin d'œil, et elles sont presque aussi faciles à fusionner. Les révisions forment un DAG, pas 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 encore mieux:
hg cat "<FileToBeExtractedPath>" -r 9 -o "<ExtractionPath>"