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

Восстановить потерянные файлы после фиксации и отката в Mercurial. (Эквивалент git reflog?)

Заданная работа. Был откат, когда я не был на кончике репо. Потерянные файлы. Ищите git reflog эквивалент для сохранения моей работы.

Long: Поэтому я заканчиваю работу, а затем фиксирую.

$ hg commit -A
[...]
adding media/js/fbfriends.js
removing media/js/streams.js
adding media/js/templetizer.js
[...]
$ hg log
$ hg log
changeset:   10:ce3ad416d9a5
tag:         tip
user:        Mihai
date:        Sat Sep 10 22:34:35 2011 -0700
summary:     Save all.

changeset:   9:ceacb7b2192a
user:        Mihai
date:        Sat Sep 10 22:25:34 2011 -0700
summary:     Mootools update.
[...]

Некоторые просмотры:

$ hg checkout 8

Хорошо. Затем я хотел изменить версию 10. Глупо, я делаю:

$ hg rollback
rolling back to revision 9 (undo commit)
$ hg status
[...]
M media/js/mootools.js
R media/js/streams.js
! media/js/fbfriends.js
! media/js/templetizer.js
[...]

WTF? Где были мои два файла??

$ hg log
changeset:   9:ceacb7b2192a
tag:         tip
user:        Mihai
date:        Sat Sep 10 22:25:34 2011 -0700
summary:     Mootools update.
[...]

Хорошо, я выясню файлы .orig:

$ hg revert --all
[...]
undeleting media/js/streams.js
forgetting media/js/templetizer.js
reverting media/js/mootools.js
[...] // media/js/fbfriends.js doesn't even show up
$ hg status
? media/js/mootools.js.orig
$ hg history
changeset:   9:ceacb7b2192a
tag:         tip
user:        Mihai
date:        Sat Sep 10 22:25:34 2011 -0700
summary:     Mootools update.

NOOOOOO! Я был по-королевски fscked для того, чтобы быть на фиксации 8, когда я сделал откат. Не удалось выполнить попытки восстановления:

$ hg checkout 10
8 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ find -name temp
$ hg checkout 9
30 files updated, 0 files merged, 63 files removed, 0 files unresolved
$ find -name temp
$ hg checkout ce3ad416d9a5
abort: unknown revision 'ce3ad416d9a5'!
$ hg checkout ceacb7b2192a
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ find -name temp
$

Но, но.. Я толкнул его! Он все равно должен быть где-то в .hg? Помогите? git reflog, git checkout blah сохранили меня в нескольких экземплярах, но существуют ли какие-либо меркуриальные эквиваленты?

РЕДАКТИРОВАТЬ: Сделано краткое изложение. EDIT2: Лучшее название.

4b9b3361

Ответ 1

Извините, их нет.

Сводка справки для команды rollback:

roll back the last transaction (dangerous)

и далее:

This command should be used with care. There is only one level of
rollback, and there is no way to undo a rollback. It will also restore the
dirstate at the time of the last transaction, losing any dirstate changes
since that time. This command does not alter the working directory.

Откат - единственная нерушимая команда mercurial, которая удаляет историю, и говорили о переносе ее на расширение по умолчанию по умолчанию, подобное тому же деструктивным кузенам strip и purge.

Не то, чтобы это помогло вам сейчас, но в будущем клон перед откат. Или еще лучше сделать backout. Backout добавляет инверсию изменения, давая ту же результирующую ревизию, но с более точной историей ( "Я сделал это", "Я расстегнул ее" ).