Получить старую версию файла без изменения родительской рабочей копии - PullRequest
34 голосов
/ 30 августа 2010

Как получить копию более ранней версии файла в Mercurial, не создавая новую рабочую копию файла по умолчанию в вашей рабочей области?

Я нашел команду hg revert и думаю, что она делает то, что я хочу, но я не уверен.

Мне нужно получить копию более ранней версии моего кода для работы в течение нескольких минут. Но я не хочу беспокоить текущую версию, которая работает нормально.

Итак, я собирался сделать это:

hg revert -r 10 myfile.pls

Есть ли способ вывести его в другой каталог, чтобы моя текущая рабочая версия файла не мешала? Что-то вроде:

hg revert -r 10 myfile.pls > c:\temp\dump\myfile_revision10.pls

Ответы [ 2 ]

51 голосов
/ 30 августа 2010

Команда cat может использоваться для получения любой ревизии файла:

$ hg cat -r 10 myfile.pls

Вы можете перенаправить вывод в другой файл с помощью

$ hg cat -r 10 myfile.pls > old.pls

или используя флаг --output.Если вам нужно сделать это для нескольких файлов, взгляните на команду archive , которая может сделать это для всего проекта, например,

$ hg archive -r 10 ../revision-10

Это создаст папку revision-10, который содержит снимок вашего репозитория в том виде, в каком он выглядел в ревизии 10.

Однако в большинстве случаев вам просто нужно использовать команду update для извлечения более ранней ревизии.Обновление - это команда, которую вы используете для обновления рабочей копии после внесения новых изменений, но эту команду также можно использовать для создания вашей рабочей копии устаревшей , если это необходимо.Итак

$ hg update -r 10   # go back
(look at your files, test, etc...)
$ hg update         # go back to the tip
9 голосов
/ 30 августа 2010

Используемая вами команда:

hg cat -r 10 myfile.pls > C:\temp\dump\myfile_revision10.pls

Знание Unix помогает с командами Mercurial.Возможно, cat должен иметь встроенный псевдоним print или что-то подобное.

...