Mercurial: "найдена прерванная транзакция - запустите hg recovery". Восстановление не работает - PullRequest
9 голосов
/ 03 апреля 2011

Используя черепаху hg на windows, я сделал пул из репозитория на локальном диске в репозиторий на флешке.

Во время пуска, я думаю, произошел сбой в usb-соединении, потому что он был прерван на полпути.

Теперь я не могу тянуть снова. Я получаю сообщение: abandoned transaction found - run hg recover

Когда я запускаю hg recovery, я получаю следующее сообщение:

rolling back interrupted transaction
** unknown exception encountered, details follow
** report bug details to http://mercurial.selenic.com/bts/
** or mercurial@selenic.com
** Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)]
** Mercurial Distributed SCM (version 1.6.3)
** Extensions loaded: fixfrozenexts
Traceback (most recent call last):
  File "hg", line 36, in <module>
  File "mercurial\dispatch.pyo", line 16, in run
  File "mercurial\dispatch.pyo", line 34, in dispatch
  File "mercurial\dispatch.pyo", line 54, in _runcatch
  File "mercurial\dispatch.pyo", line 494, in _dispatch
  File "mercurial\dispatch.pyo", line 355, in runcommand
  File "mercurial\dispatch.pyo", line 545, in _runcommand
  File "mercurial\dispatch.pyo", line 499, in checkargs
  File "mercurial\dispatch.pyo", line 492, in <lambda>
  File "mercurial\util.pyo", line 420, in check
  File "mercurial\commands.pyo", line 2869, in recover
  File "mercurial\localrepo.pyo", line 606, in recover
  File "mercurial\transaction.pyo", line 173, in rollback
ValueError: too many values to unpack

Если я пытаюсь выполнить откат вручную, я получаю это сообщение: no rollback information available

На этот раз я могу довольно легко просто удалить всю резервную копию на моей флешке и сделать новую выгрузку, потому что репо маленькое, а usb-флешка не содержит никаких других изменений. Но что, если это произойдет на большом репо, где я не могу позволить себе перезапустить с нуля? Как я могу восстановить репо?

Ответы [ 3 ]

5 голосов
/ 29 февраля 2012

Я столкнулся с подобной проблемой и сообщил о ней как об ошибке , и разработчик в отчете предположил, что проблема в поврежденном журнале.Как описано в отчете об ошибке, вы можете запустить hg verify, чтобы увидеть последний «хороший» коммит, и использовать hg clone -r <#> для восстановления вплоть до этого коммита.

4 голосов
/ 04 апреля 2011

Я думаю, что это на самом деле ошибка в исходном коде. Вы должны сообщить об ошибке в команду Mercurial, как сказано в сообщении об ошибке.

0 голосов
/ 02 июня 2015

Я использовал TeamCity CI и сервер развертывания, так что, возможно, это другая проблема, но я отправил ответ на аналогичный вопрос .

...