如何修复由hg取消搁置的存储库?

时间:2015-05-13 11:12:54

标签: mercurial unshelve

我在存储库中使用了hg shelve,我在那里进行了一些未完成的更改,因为我需要切换到不同的头并执行无关的更改。

一旦我在另一个头上的工作被提交,我就切换回我最初使用的头部hg shelve并运行hg unshelve命令。这就是结果:

$ hg unshelve
unshelving change 'default'
adding changesets
adding manifests
adding file changes
added 1 changesets with 4 changes to 4 files (+1 heads)
abort: uncommitted changes
$ hg diff
warning: ignoring unknown working parent 893e15ecb5b4!
$ 

我确实在hg head命令之前和之后运行unshelve并看到了相同的输出。提交893e15ecb5b4从未存在过,我不知道Mercurial从哪里得到它。

如果它有任何相关性,我在Ubuntu 14.04上运行Mercurial版本2.8.2。

如何让我的存储库恢复工作状态,如何恢复我的搁置更改?

1 个答案:

答案 0 :(得分:8)

以下步骤解决了我的问题:

  1. 在使用hg debugsetparents
  2. 之前,使用893e15ecb5b4将已损坏的父版本号unshelve替换为我更新过的正确版本号hg manifest | tr '\n' '\0' | xargs -0 touch
  3. 因为上面让我处于Mercurial忘记所有本地更改的状态,所以我不得不使用patch -p1 < .hg/shelved/default.patch让它再次注意到任何本地更改。
  4. 可以使用hg unshelve恢复搁置的更改,在我的情况下,我确实完成了[listWords[i] for i, k in sorted(enumerate(listOccurrences), key=itemgetter(1), reverse=True)] 应该为我做的事情。