Mercurial: восстановление файлов - PullRequest
12 голосов
/ 27 июля 2010

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

svn cp src@REV dest

т.е. использовать ревизии колышков. Какой эквивалент у Mercurial?

Ответы [ 2 ]

7 голосов
/ 28 июля 2010

Не просто (если бы вы "hg remove" поставили в 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.

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

7 голосов
/ 27 июля 2010

Я не думаю, что у 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 может его отслеживать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...