2013-02-12 25 views
0

這不是另一個什麼是書籤/什麼是分支機構的問題 - 我已閱讀所有這些帖子,現在想澄清有關正確使用的一些事情。Mercurial書籤 - 利用開發和穩定版本

我正在開發一個網站。我想要一個穩定版本和一個開發版本。

所以我創建了兩個書籤'stable'和'development'。

如果我想創建一個新功能,我更新到開發書籤,並創建我的功能。

如果我想糾正一個錯字,我直接在穩定版本中進行。

我的困惑如下。 我有一個位於bitbucket的中央存儲庫。

如果我使用hg push,我的書籤數據沒有通過。如果我分別執行hg push -B stable或hg push -B development,則會推送我的書籤數據。

然後我有兩臺服務器,一臺測試服務器和一臺活動服務器。 如果我ssh到服務器上,並從bitbucket進行hg pull,因爲服務器上沒有書籤,什麼是拉的,當我使用hg更新時工作副本是什麼更新?

正確使用我想要的東西,我相信如下。我的兩個書籤「穩定」和「發展」的本地存儲庫。我根據需要在兩者之間切換,並用hg push -B書籤名將它們推送到bitbucket。然後,我分別登錄到我的測試/實時服務器並拉出正確的書籤版本。

一旦我測試了我的開發書籤,我可以將它與我的穩定版本合併,並將它拉到實時服務器上。

我的擔憂和我的問題是什麼發生如果我不小心忘記指定書籤時拉動到現場服務器例如?

謝謝

回答

0

我把書籤當作本地標籤而不再處理。所以如果我想要推送標籤信息,那麼我使用實際的標籤來標記穩定版本。例如,每次我發佈一個版本時,都會將其標記爲「rel-2.4」。

然後在現場我可以更新到最新的版本,並知道這是最後一個良好的版本。我的「開發人員」只是默認分支的負責人,我不斷向其中添加新的開發部分。通過這種方式,您可以輕輕一推,而不用擔心書籤。

這可能不是你想要的或你想象的,但對於你描述的情況來說這是一個可行的解決方案。

如果我們需要解決一個問題(在您的示例中是一個錯字),我可以更新到最新版本,更正類型,測試以及是否快樂將其標記爲下一版本(rel-2.41)。將該新分支合併回默認值,以便我的開發分支也具有該修補程序。在現場服務器上跳轉並將其更新到rel-2.41

對你有好處嗎?

1

Pulling

From Mercurial 2.3,pulling gets the remote repository's bookmarks as well。之前,您必須指定​​才能獲取書籤以及更改集。因此,您的服務器存儲庫在提取後將具有正確的書籤。

如果您使用的是早期版本,您還需要pull -B <bookmark>以獲取書籤。當然,如果您不想將所有development變更集放到您的實時服務器上,無論如何您都可以這樣做。

更新

使用hg update不帶參數將讓你tip,這始終是最後的變更添加到庫中,不管是stabledevelopment或意外取消書籤(實際上,它會讓你的最後添加到當前分支的變更集,但它聽起來像你沒有使用命名分支)。爲了在更新時獲得一致的結果,我建議您明確指出每個服務器存儲庫要更新到哪個書籤。如果您擔心忘記指定,請使用腳本來自動執行更新過程。

1

正確的用法恕我直言,是使用命名分支,而不是書籤。