'bzr update'擦除了我所有的本地提交。救命!

时间:2010-12-11 00:07:56

标签: bazaar

我认为我的变更集可能发生了一些不好的事情。

为了记录,我之前使用过git,hg和svn并取得了一般成功。我对bzr的理解不太完整。

这就是我所拥有的(Windows XP):

1)使用bzr的svn checkout创建的文件夹。称之为稳定的 2)从我用于开发的文件夹中分出的文件夹。称之为开发

我的计划是在开发分支上使用commit --local来跟踪更改,并且它正在起作用。

然后,我进行了'bzr更新'(因为它在我试图推送时抱怨)。当时,stable有一个更旧的代码副本。那么,现在开发有相同的旧版本。 'bzr log'没有显示我本地提交的任何证据!

有人可以向我解释发生了什么,以及我可以做些什么来恢复我的旧代码?

2 个答案:

答案 0 :(得分:5)

好的,我找到了。经过一番疯狂的搜索后,我在查看了另一个stackoverflow问题后发现了密码“dead head”: Some code was lost after doing bzr commit --local, bzr pull, bzr commit

然而,他们提出的解决方案并不适用于我。什么工作,发现在 http://chrismarinos.com/don-t-loose-your-head-with-bazaar/

最后的答案是使用heads --all找到修订版ID,然后使用pull get get所有版本:

bzr heads --all
bzr pull --overwrite -r revid:<revision-id>

我的所有代码都回来了,现在备份了3到4次。

答案 1 :(得分:5)

老实说,我不能说会发生什么事情 - 老实说看起来就像是一个(听起来很灾难性的错误)的行为,除非你做了类似bzr pull --overwrite或做过bzr revert之后的事情。一个有冲突的bzr pull

首先,看看你能否可靠地复制这个问题。但是,是否可以file a bug report against bzr,以便可以跟踪此问题。此外,在执行 ANYTHING ELSE AT ALL 之前,请备份您在这些分支中拥有的数据。如果您一直在共享存储库中工作,请备份整个事情。这样,如果需要这么大的努力,它可用于法医恢复。但是,要获得更多帮助,您必须与Bazaar开发人员合作。在FreeNode的IRC网络的#bzr房间里闲逛可能会有所帮助。正如寻求IRC支持一样,耐心是关键,即使您所处的情况非常紧急。他们可能会给你一些关于如何挖掘这些提交的Python代码或说明,他们也可以告诉你如何找出发生的事情。

那就是说,我在做这样的开发时通常做的是,我有一个未绑定的“上游”分支,然后是我正在工作的任何分支。当我完成我的更改后,我将从上游开始,将我的分支合并到生成的树中,然后向上推。例如:

$ bzr init-repo project; cd project
$ bzr branch bzr+ssh://example.org/srv/bzr/project/trunk trunk
$ bzr branch trunk my-feature-branch
$ cd my-feature-branch
 ... work, commit; work, commit; ...
$ cd ../trunk
$ bzr pull
$ bzr merge ../my-feature-branch
 ... resolve any merge conflicts here, if any ...
$ bzr ci -m 'Merge in my-feature-branch'
$ bzr push :parent

这样做也会使你的工作与upsteam分支分开,直到你准备好合并并推送它。它确保您的本地分支机构永远不会被覆盖。