2013-03-05 40 views
0

在我當前的工作流中,無論何時需要分支,我都使用書籤,但爲了從當前版本創建新頭,我必須提交一些虛擬更改並返回一個修訂,然後提交,否則無論我擁有多少書籤,提交都會提交給同一個負責人。在mercurial中創建新頭

例如,假設我在啓40:

hg bookmark main 
hg ci somefile -m 'dummy commit' # on rev 41 now 
hg up -r 40 
# make some changes 
hg ci -A -m 'changes in bookmark' # created new head 
hg bookmark test 

這是常見的還是有一些shorcut給力新頭的創造?

回答

1

沒有必要進行第二次頭,在你的例子來創建,你不應該強迫它的創作。

與您的工作流程的好處是,你可以在功能test停止工作要做主枝上這樣一個更迫切的變化:

> hg bookmark main 
> hg bookmark test   # Start work on feature test 

... do some code ... 

> hg commit -m "Working on feature test" 
> hg update main   # Stop working on test, start working on main 

... do an urgent fix ... 

> hg commit -m "Urgent fix" 
> hg update test   # Back to work on feature test 

... do some more code ... 

> hg update main   # Finished the work so back to main 
> hg merge test   # Merge the work into main 
> hg commit -m "Merge in feature test" 

如果這樣做了,你就已經完成了新功能,將它合併回主開發分支。

如果您在完成功能test的工作後未對main分支進行任何更改,則無法合併更改,因爲無法將更改集合併爲祖先,因此您需要移動在main書籤到test書籤如下:

> hg update test 
> hg bookmark main -f 

(我認爲,這就是所謂的快進合併在git並且可以強制合併,如果你想,但沒有mercurial相當於儘可能我知道)

+0

我明白了,但是當我創建兩個書籤並提交時,是將更改寫入一個還是兩個? – 2013-03-05 22:39:13

+0

明白了,它只是承諾活躍的書籤,這正是我想要的,有太多過時的帖子「git vs mercurial」說舊的版本的東西,很難知道什麼工作,直到你自己測試它。 – 2013-03-05 22:43:44

1

我想你想練習nvie的工作流程,所以你想用--no-ff合併上游流。

據我所知,hg不支持在同一分支中與上游合併。正如這post所說,hg的頭/書籤是git't分支,而hg的分支是血統。

因此,解決方案是在分叉點,你改變書籤和分支,然後你可以合併分支,因爲它們是不同的血統。

在我的例子中,你可以很容易地hg branch -f dev,即使他們沒有連接,重新打開分支。

所以,你可以有一個像分支:

  • 默認
  • 穩定
  • 功能
  • 修復

然後書籤應該是前綴爲:

  • 特徵 - *
  • hotfix- *

而且應該分出相應的分支機構。

然後,他們可以

Graphlog for my example

+0

我沒有亢奮令人興奮的,只是本地的,我使用書籤來避免分支,只是測試一些變化。 – 2013-03-05 22:36:00

+1

@dhunter對不起,誤解了你的需求。是的,當'hg up BOOKMARK-NAME'時,書籤將被激活。 – 2013-03-06 02:22:01

+0

無需道歉,感謝您的關注。 – 2013-03-06 13:00:09