2010-08-30 3 views
33

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

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

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

Так что я собирался сделать это:

hg revert -r 10 myfile.pls 

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

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

ответ

49

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

$ hg cat -r 10 myfile.pls 

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

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

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

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

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

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

$ hg update -r 10 # go back 
(look at your files, test, etc...) 
$ hg update   # go back to the tip 
+0

Благодарим за полезное и * краткое описание 'update'! Я был немного взволнован, прежде чем использовать команду update (как и предположил Coriolanus). –

9

Команда, которую вы используете это:

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

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