2010-06-14 61 views
1

這個簡短的問題是:如果我hg rollback,彼得如果從我身上克隆我怎麼得到我的回滾版本? 他或我需要做什麼或鍵入的確切步驟是什麼?在Mercurial中,彼得或我必須做的確切步驟是什麼,以便他獲得回滾版本?

這與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 

哪些具體步驟彼得或我所要做的或SO鍵入彼得GETS 7回? Peter應該採取一些步驟,讓他從我身上克隆出來,以獲取我的存儲庫的「當前狀態」。我不需要敲他的前門告訴他,「嘿,你需要回滾」或者其他什麼。

回答

4

如果有人已經提出了更改(這是您正在描述的情況),回滾並不合適。

hg手冊:

此命令不適用於公共庫的使用 。一旦更改 對其他用戶可見, 在本地回滾事務處理爲 無效(其他人可能已經 已撤消更改)。此外, 與 存儲庫的讀者可以競賽;例如,如果執行回滾 ,則從存儲庫中執行的正在進行的 拉動可能會失敗。

你應該做的是hg backout變更集,然後告訴彼得拉。

如果你堅持回滾,你可以告訴Peter重新登錄倉庫,但我不會推薦這樣工作。

+0

看來我應該使用「汞退出-r -1」 - 這是說,反回我以前的版本(取消以前提交)...並創建一個新版本。所以彼得,不管是否知道,當他進行「hg pull」和「hg update」時,無論如何都會得到「退出」。如果他做出改變並想要提交併推送,那麼hg會告訴他先取消並更新,這也會得到「退出」。 – 2010-06-14 06:42:19

+0

你是對的。回滾是撤消操作,你應該完成撤銷操作,那麼彼得會將其作爲正常推/拉循環的一部分 – 2010-06-14 18:28:11

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
部分用已提交更改處理

相關問題