2010-08-29 32 views
1

說,如果我們有一個稱爲main一個項目,然後我們有一個項目,是analytics,並猛砸,我們在analytics工作目錄,並意外地推到main遠程倉庫,將在analytics所有文件添加到main項目,它是可逆的嗎?如果我們將錯誤的項目推送到另一個遠程存儲庫,會發生什麼情況?

+0

你爲什麼不自己嘗試一下呢?看看我的答案,看看測試這些東西有多容易:-) – 2010-08-29 18:13:12

回答

3

你會從水銀得到一個投訴,並推動將被中止。它看起來像這樣:

# create main repo: 
% hg init main 
% touch main/a.txt 
% hg -R main commit --addremove -m main 
adding a.txt 

# create analytics repo 
% hg init analytics 
% touch analytics/a.txt 
% hg -R analytics commit --addremove -m analytics 
adding a.txt 

# try the push: 
% hg -R analytics push main 
pushing to main 
searching for changes 
abort: repository is unrelated 

水銀知道,如果兩個儲存根據其根節點的是相關。也就是說,如果存儲庫A和B共享共同的根節點,則它們是相關的。

+0

Mercurial如何知道?比如說,如果兩個項目只有一個文件是'index.html',那麼它如何知道哪個項目是哪個項目?或者,如果兩個項目都碰巧有一個文件在相同的路徑,如'config/database.yml' – 2010-08-29 18:15:52

+0

我不確定這個評論 - 我只是嘗試了兩個本地回購,並從CLI沒有警告。我知道TortoiseHg會發出一些警告,但可以通過選擇「強制推送」選項來避免這些警告。 – dls 2010-08-29 18:16:10

+0

有趣的是,如何知道他們是不相關的?是否通過使用轉數(長整數)來檢查它們來自同一個「根」?事實上,我可以推動John的機器,或推動分級,推動測試,或從測試推到分級,看起來可能是任意的。 – 2010-08-29 18:25:29

0

如果main是本地存儲庫,則可導航到main並執行histedit以刪除違規提交。您也可以從基於服務器的main發出聲音,但如果有其他用戶創建了克隆,則當他們推到主體時,他們將重新添加更改。

histedit是汞的擴展,沒有附帶汞捆綁在一起。一旦你安裝它,你可以像這樣使用它:

> hg histedit <rev> 

哪裏是違規提交的開始。 Histedit將生成一個提交列表,直到提示。在這個列表中,您可以向histedit表明您想要保留提交,編輯註釋或放棄提交。滴應該做的伎倆。

相關問題