Как получить определенную версию файла в Подвижном?

Я плохо знаком с Подвижным. Просто не может найти правильную команду. Испытанное обновление/контроль без удачи. Я использую локальный репозиторий.Спасибо

109
задан djc 3 February 2014 в 09:45
поделиться

3 ответа

Я думаю, что вы хотите HG Revert -R <Файл> (это изменит этот файл, чтобы быть таким, как оно было по данной ревизии).

150
ответ дан 24 November 2019 в 03:20
поделиться

Как сказал DJC Revert изменяет файл на месте, чтобы соответствовать предыдущему пересмотру. Если вы хотите его не на месте, вы можете использовать HG CAT -R REVISTIDID FILENAME (подстановка RevisionId и filename конечно), который выводят файл на STDOUT, подходящий для перенаправления любого места.

81
ответ дан 24 November 2019 в 03:20
поделиться

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

HG Update - это целая команда репозитория и не будет работать на отдельных файлах. Это в отличие от Subversion Обновление SVN таким образом. Если вы сделаете Update HG --help Вы можете увидеть, что это так, потому что команда не принимает аргумент файла. Его можно использовать для перемещения всего репозитория на определенный снимок, но не может быть использован для этого только с одним файлом.

Если вы напечатаете HG --help Вы видите список команд. Это довольно большой и несколько сложный список, но если вы прочитаете его, вы найдете эту строку:

revert       restore individual files or directories to an earlier state

Теперь, если вы просто хотите, чтобы последнее состояние для сравнения, есть другая команда, которую вы можете заинтересовать, и Это HG Cat . Это позволит вам распечатать содержимое файла при любой конкретной ревизии. Затем вы можете перенаправить его вывод в какой-то другой файл. Тогда вы можете получить предыдущую известную хорошую версию вашего файла и старую версию для сравнения бок о бок.

Причина, по которой Mercurial имеет отдельное Обновление Команда , заключается в том, что можно что-то сделать в Mercurial, что невозможно в Subversion. Вы можете обновление на более раннюю версию, внесите изменения, затем совершать. Это создаст ветку. Команда UPDATE имеет эффект также изменения родительского пересмотра текущего рабочего каталога, а также изменения содержимого всех файлов в этом каталоге к версиям ревизии родителей.

Это означает REVERT изменяет содержимое файла (или даже всего репозитория, если вы дадите команду правильные аргументы), но оставляет родительскую версию текущей рабочей копии то же самое.

Вы можете узнать родительскую ревизию (или ревизии в случае слияния) текущей рабочей копии с помощью команды HG Rooms .

В ревизиях Subversion являются строго линейной прогрессией. Mercurial создает ветви на капле шляпы, и они почти так же легко сливаться. Изменения формируют даг, а не строго линейную прогрессию.

24
ответ дан 24 November 2019 в 03:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: