Подтвердить что ты не робот

Mercurial: восстановить файлы

Я хотел бы восстановить файл, который был удален в некоторой фиксации, и восстановить его под другим именем, чтобы он делил историю. В подрывной деятельности я сделал бы

svn cp [email protected] dest

то есть. используйте изменения привязки. Что эквивалентно в Mercurial?

4b9b3361

Ответ 1

Я не думаю, что у Mercurial есть встроенный способ сделать это. Но я думаю, что вы можете получить тот же эффект через:

hg up -C REV # Update to revision containing a copy of the file
<modify the file in question>
hg commit  # Create second head based on old revision
hg merge # Merge two heads into one
# Note: make sure to choose to have the file exist
hg commit
hg mv MYFILE MYNEWNAME

У этого файла будет сохранена вся старая история, так как Mercurial может отслеживать его.

Ответ 2

Не просто (если вы "hg remove" d src в REV + 1):

hg revert -rREV src
hg status
A src
hg rename src dest
hg commit -m"restored src and renamed it to dest"

работа?

отредактировано. Я только что протестировал его, и, похоже, все в порядке. На самом деле для src не требуется "hg add", так как revert заботится об этом. Однако, если вы выполняете только одну фиксацию вместо двух (например, в приведенном выше коде), hg выдаст предупреждение:

src еще не зафиксирован, поэтому нет копии данных будут сохранены для dest.

Надеюсь, что это поможет.