在Mercurial中,彼得或我必须做的确切步骤是什么让他回到后退版本?

时间:2010-06-14 05:03:45

标签: mercurial dvcs

简短的问题是:如果我hg rollback,如果他克隆了我,彼得如何获得我的回滚版本? 他或我必须执行或输入的确切步骤是什么?

这与In Mercurial, when Peter "hg clone" me, and I commit and he pull and update, he gets my version, but not when I rollback?

有关

细节:

完成以下步骤后,玛丽有7,彼得有11。我的存储库是7 彼得或我必须做的具体步骤是什么,或者输入那些回到PETER GETS 7的步骤?

F:\>hg init hgme
F:\>cd hgme
F:\hgme>echo the code is 7 > code.txt
F:\hgme>hg add code.txt
F:\hgme>hg commit -m "this is version 1"
F:\hgme>cd ..
F:\>hg clone hgme hgpeter
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
F:\>type hgpeter\code.txt
the code is 7
F:\>cd hgme
F:\hgme>notepad code.txt   [now i change 7 to 11]
F:\hgme>hg commit -m "this is version 2"
F:\hgme>cd ..\hgpeter
F:\hgpeter>hg pull
pulling from f:\hgme
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
F:\hgpeter>hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
F:\hgpeter>type code.txt
the code is 11
F:\hgpeter>cd ..\hgme
F:\hgme>hg rollback
rolling back last transaction
F:\hgme>cd ..
F:\>hg clone hgme hgmary
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
F:\>type hgmary\code.txt
the code is 7
F:\>cd hgpeter
F:\hgpeter>hg pull
pulling from f:\hgme
searching for changes
no changes found
F:\hgpeter>type code.txt
the code is 11

彼得或我必须做的具体步骤是什么,或者输入那些回到PETER GETS 7的步骤?彼得应该采取一些措施来获取我的存储库的“当前状态”他克隆了我。我不应该敲他的前门告诉他,“嘿,你需要回滚”或其他什么。

2 个答案:

答案 0 :(得分:4)

如果有人已撤消您的更改(您正在描述的情况),则回滚不合适。

来自hg手册:

  

此命令不适用   在公共存储库上。一旦改变   可供其他用户使用,   在本地滚动交易是   无效(别人可能已经   拉了变化)。此外,   与读者的比赛是可能的   库;例如正在进行中   如果a,从存储库中拉出可能会失败   执行回滚。

你应该做的是hg backout变更集,然后告诉彼拉。

如果你坚持回滚,你可以告诉Peter重新登记存储库,但我不建议这样做。

答案 1 :(得分:2)

是的,这种代码更改方案永远不应该使用hg rollback。它应该使用hg backouthg rollback删除了历史记录,但是如果

1)有人从你身边撤走了 2)或者,你推了

然后你的版本被称为“野外”,有一天可以通过添加回你的存储库来“回来咬你”。因此,规则是,永远不要使用hg rollback,除非您正在回滚应该从未存在于存储库中的内容,例如使存储库历史非常大的所有编译目标代码文件,你确定没有人拉,你从不推,然后使用hg rollback。对于普通版本控制使用,请使用hg backout

hg backout tip

将退出存储库中的最新修订版(通过创建新的变更集和历史记录)。

参考:http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html
处理已提交的更改

部分