2010-06-19 40 views
1

使用Macbook,我很擔心,如果硬盤在路上而且壞了,那麼3天的代碼都會丟失。使用Mercurial,是否有快速備份到tmp存儲庫的方法?

所以我實際上有我們的主服務器計算機上的tmp目錄庫,我可以hg push它。這個困境是,除非我首先承諾,否則我不能推動,而且從以前的經驗來看,除非我們準備推送到中央服務器(與同事共享代碼,合併等),否則我們不應該進行承諾(原因在於,我們不能推送選定的文件 - 我們必須推送所有提交的文件或不推送)。那麼如何解決這個問題呢?

有沒有辦法說,「將所有修改文件(和添加的文件)複製到中央服務器上的/ user/peter/2010-06-18?」)或不提交,但以某種方式將其獲取到服務器上?

回答

4

正常的方式就是提交。對於DVCS,我們敦促他們「早期承諾,經常承諾」。經常在本地提交,然後出於備份目的頻繁推送到服務器上的tmp repo。當你對自己的工作感到滿意時,你可以從你的tmp repo推送到共享的「中央」服務器。

有沒有必要,以確保一切編譯每個變更後,該規範是隻要確保你推變更的每個後留下的可編譯狀態的「尖」。通常,在每組變更集(changegroup)到達後,觸發持續集成構建服務器來構建構建,並且它只考慮'tip'。

如果真的,真的受不了自己無法承受的變更集,那麼mercurial pro會使用mercurial queues來保持版本化的補丁在工作時被推送到單獨的隊列存儲庫。有人願意玩火,會使用摺疊擴展將變更序列合併到一個變更集中,然後推送到共享回購站。

三個選項中提出:

  1. 解決您的工作流程,使得中央回購可以處理不編譯變更,只要他們能編譯
  2. 使用水銀一個changegroup的一部分隊列保持一個補丁在一個版本的補丁庫
  3. 使用崩潰擴展到改寫歷史(玩火)

我認爲首先是最常見的做,和g通常是「正確的」方式。

+0

哦,但是如果所有提交的5個文件,而當你準備推到中央服務器後...和你只想要把3個文件,然後反回你不想推其他2個文件? – 2010-06-19 01:36:54

+0

如果這5個文件是相關的,那麼在它們準備就緒之前,不應該推送到中央服務器。如果它們不相關,則應該只提交它們中的三個,「hg update -r -2」(返回一個變更集),然後提交另外兩個變更集。現在他們處於不同的同胞變更集中,同一父母 - 匿名分支根據http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/ - 使用'push -r'就可以不用另一個推動一個cset。 提前提交,經常提交,經常分支。 – 2010-06-20 19:04:49

相關問題