Mercurial:“废弃的交易发现 - 运行hg recover”。恢复不起作用

时间:2011-04-03 11:07:08

标签: windows version-control mercurial

在Windows上使用tortoise hg,我从本地驱动器上的存储库拉到了usb stick上的存储库。

在拉动期间,我猜在usb连接中有一个小故障,因为它在中途中止了。

现在我再也不能拉了。我收到了消息:abandoned transaction found - run hg recover

当我运行hg recover时,我收到以下消息:

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

这次我可以很容易地删除我的棒上的整个备份并重新拉动,因为repo很小而且usb-stick不包含任何其他更改。但是,如果这种情况发生在一个更大的仓库,我无法从头开始重新启动怎么办?我怎样才能恢复回购?

3 个答案:

答案 0 :(得分:5)

我遇到过类似的问题和reported it as a bug,报告中的开发人员认为问题是一个损坏的日记。如错误报告中所述,您可以运行hg verify以查看上次“正常”提交,并使用hg clone -r <#>进行恢复直到该提交。

答案 1 :(得分:4)

我认为这实际上是代码源中的一个错误。您应该将错误报告给Mercurial团队,如错误消息中所述。

答案 2 :(得分:0)

我正在使用TeamCity CI和部署服务器,因此,这可能是另一个问题,但我posted the answersimilar question