Я хотел бы восстановить файл, который был удален в некоторой фиксации и восстанавливает ее под другим именем, так, чтобы она совместно использовала историю. В подверсии я сделал бы
svn cp src@REV dest
т.е. используйте изменения штепселя. Каков эквивалент в Подвижном?
Я не думаю, что в 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 может ее отслеживать.
Разве просто (если вы "hg удалить
"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"
работать?
edited: Я только что протестировал его, и, кажется, все в порядке. На самом деле никакое «hg add
» не требуется для src, так как revert заботится об этом. Однако, если вы сделаете только одну фиксацию вместо двух (как в коде выше), hg выдаст предупреждение:
src еще не был зафиксирован, поэтому нет копирование данных будет храниться для dest.
Надеюсь, это поможет.