2011-04-16 96 views
21

假設你擁有一個Mercurial存儲庫,在着手實驗性代碼時分支或分支存儲庫會更好嗎?更好地分支或分支Mercurial存儲庫?

在我的情況下,我是一個單獨的開發人員,即將開始實驗代碼。我預計這個實驗需要4到6個小時。如果我認爲這個實驗是失敗的,那麼我不太可能再次提及它。

我經常承諾並定期推送。在實驗過程中,我只能提交併拋出本地回購。不過,我主要以備用手段爲主。該存儲庫託管在bitbucket上。

在這種情況下,我最好是分支還是分叉存儲庫?

回答

18

作爲所有工作命名分支的粉絲(分支每任務等),我會建議...做到兩個。

克隆原始回購,並在新回購爲實驗工作創建一個新的命名分支。

如果您決定保留實驗工作,請將其推回原始存儲庫(根據需要執行合併)。

如果您決定不保留實驗工作,只需將實驗倉庫丟棄即可。

+0

當你說'克隆原始回購'時,你的意思是分叉嗎? – 2012-01-06 22:15:18

+7

Mercurial(和其他DVCS)中的克隆和分支是一回事。術語「fork」通常用來指代一個克隆,它總是保持與原始版本有些不同(例如,只與原始版本合併,而不是原始版本),而「克隆」意味着回購是對等的其目的是保持或多或少同步。 – 2012-01-07 23:49:25

3

如果我認爲實驗失敗 那麼它極不可能我將永遠 想再次引用它。

您回答了您自己的問題,在本地分叉,然後在主存儲庫中取消您的更改(如果成功)。

雖然我不認爲你會產生在4〜6小時的內容過多,將使一個無用的分支麻煩......

+1

是什麼讓一個無用的分支煩人? – 2011-04-16 07:04:24

+4

它的大小,如果它佔據了很大一部分存儲庫。這是一種罕見的情況,即使如此,這只是一個輕微的不便,而不是問題。這就是爲什麼我不認爲應該避免實驗的分支,你怎麼能確定一個失敗的實驗歷史不會有用呢? – 2011-04-16 07:42:10

3

我會說這並不重要。在這兩種情況下,這取決於刪除實驗的時間,以後您是否可以參考它。

當您執行實驗分支時,您可以稍後使用strip命令(它是mq擴展的一部分)刪除它們。或者您可以使用convert從hg到hg存儲庫以刪除死分支。你甚至可以簡單地克隆和省略分支。

當你爲實驗分支分支時,如果你想引用它,你可以明確地將它們合併。

因此,這一切都歸結爲這樣一個問題:你想保留實驗分支多久,你想存儲在哪裏?

3

考慮將文檔分支。你和其他人可以參考這些想法,並在稍後改變。預見你說「哦,我曾經在一家分店嘗試過......但刪除了它。」唯一的成本是一個小磁盤空間。