2012-01-04 67 views
13

我正在使用命名分支的mercurial,並注意到當我創建默認的新分支時,默認標記爲非活動分支。例如:Mercurial:保持默認分支「活躍」

C:\data\solutions\test-repo>hg branches 
default      0:aeec280e6310 

C:\data\solutions\test-repo>hg branch feature-branch 
marked working directory as branch feature-branch 

C:\data\solutions\test-repo>hg com -m "created new branch" 

C:\data\solutions\test-repo>hg branches 
feature-branch     1:1cb18d7fa554 
default      0:aeec280e6310 (inactive) 

這是一個問題,因爲我們的部署系統顯示命名的分支是活動的,可以從中進行部署。

如何讓我的默認分支「活動」?

回答

22

「活躍」和「不活躍」分支的概念是我們正在從Mercurial項目中移開的東西。問題在於,分支機構可以在兩個狀態之間來回翻轉,或多或少隨機地在不方便的時間 - 就像您剛纔所看到的那樣。

相反,我們現在將重點放在「開放」與「關閉」之間。這是一個明確的概念:關閉一個分公司負責人,你做

$ hg update feature-branch 
$ hg commit --close-branch -m "passes all tests, ready for merging" 

這將添加爲關閉這標誌着該分公司負責人特別的變更。當一個分支上的所有頭部都關閉時,該分支本身會被視爲關閉,並將從hg branches中消失。我建議在合併之前關閉,請see my named branch guide for a longer example

所以我建議你改變你的部署系統來顯示開放分支(hg branches)而不是活動分支(hg branches --active)。

+1

但是,這是如何保持默認激活?正如我所看到的,在創建一個命名分支後,您必須更新爲默認值,並進行「虛擬」提交,否則默認分支將被標記爲非活動狀態。 – mslot 2012-05-02 20:10:33

+0

@mslot:我建議使用關閉/打開而不是主動/非主動。忘掉所有關於不活動分支的內容,然後重點關注分支。要重新打開一個分支,您需要在將其標記爲關閉的變更集之後進行提交 - 這通常不是問題,因爲您想重新打開分支,因爲您在該分支上進行了一些實際更改。 – 2012-05-03 09:21:42

+0

爲您的指導+1,因爲它是非常有用和描述性的。 – glglgl 2016-01-18 12:58:21

13

不活動只意味着它沒有頭。

在你的情況下,圖是這樣的:

default:  0 -\ 
feature-branch:  \- 1 --- * 

*意味着「工作目錄

當你做更多的修正你的功能(如節點2和3),這將是縱橫:

default:  0 -\ 
feature-branch:  \- 1 --- 2 --- 3 ---- * 

當你想feature-branch融入default剛剛更新到default

default:  0 -\--------------------- * 
feature-branch:  \- 1 --- 2 --- 3 

然後合併feature-branchdefault

default:  0 -\-------------------/- * 
feature-branch:  \- 1 --- 2 --- 3 -/ 

它出現「無效」並不意味着你不能用它工作的事實。例如,您的「部署腳本」可以有一個hg update --clean default,即使它顯示爲「非活動」,它也可以正常工作。

不活動只是意味着它沒有頭。沒有其他的。合併後,它將變爲活動狀態,並將變爲「非活動」feature-branch

不要介意它的活動/非活動狀態,只要正常使用。

+0

雖然這是一個很好的例子,顯示一個分支被認爲是不活動的,但是說'沒有頭'是誤導的,因爲*是頭部。在這種情況下,特性分支的頭部是3:'hg heads feature-branch'會證實這一點。相反,這是一個商業規則(*不同於'沒有頭'),「hg branches」決定其處於活動狀態。 – user2864740 2016-01-07 05:38:42

+0

規則如下:* * * * * * * * * * *所有*的子元素屬於一個*不同的*命名分支(如圖所示的合併之後),則它被認爲是不活動的。在同一個命名分支上創建一個新的頭(例如在名稱分支上添加一個提交)會立即違反規則,並且至少在一瞬間它會再次激活。 – user2864740 2016-01-07 05:42:48