2013-11-15 57 views
1

給定一個叫做'main'的分支。作爲一名希望開發新功能的開發人員,我創建了'f1'並進行了多次提交,並定期推送到我們的中央倉庫。在處理該功能時,我需要在分支中獲取「main」的更改。如何在mercurial feature分支(工作流程)中引入最新更改?

我知道我可以hg merge main得到在「F1」的變化。但是當我後來融入'主'時,那麼歷史將充滿對那個臨時分支的引用。事後纔有辦法讓我的分支工作變得不那麼明顯?

+0

讓我改閉... – Sylvain

+0

做之前,讓我知道,如果它仍然是不明確 – Sylvain

+0

沒有。在mercurial命名的分支是持久的 – zerkms

回答

0

首先,如果f1分支已經在中央倉庫中,爲什麼你擔心主分支在將後者合併到前者中後會包含f1分支的歷史?一旦它被推入中央倉庫,f1分支不再是臨時性的/一次性的/不可見的,它對所有可以訪問中央倉庫的人都是可見的。

回答你的問題是:沒辦法,除非F1是通過克隆分支。所有使用書籤和/或匿名分支的建議都是錯誤的。

1

爲了使分支歷史不太明顯,你應該使用bookmarks。我們來看看這兩種情況,一個命名分支或一個書籤。

有了新的分支命名爲從 '主' 'F1':

$ hg update main 
$ hg branch f1 
... 
$ hg glog --template "{rev} {branch} {bookmarks} {desc}\n" 

@ 5 main Hacking main. 
| 
| o 4 f1 Hacking f1. 
| | 
| o 3 f1 Hacking f1. 
|/ 
o 2 main Hacking main. 
| 
o 1 main Hacking main. 
| 
o 0 default 

使用命名的 '主' 'F1' 的新書籤:

$ hg update main 
$ hg bookmark f1 
... 
$ hg glog --template "{rev} {branch} {bookmarks} {desc}\n" 

@ 5 main Hacking main. 
| 
| o 4 main f1 Hacking f1. 
| | 
| o 3 main Hacking f1. 
|/ 
o 2 main Hacking main. 
| 
o 1 main Hacking main. 
| 
o 0 default 

在書籤情況下, 'F1'功能可以從歷史中刪除hg bookmarks --delete f1(從Mercurial 2.3新書籤被默認拉動WhatsNew),並且'main'分支中有兩條路徑。

+0

這個解決方案的問題在於,如果他想要定期推送到他的中央倉庫,它不會很好地工作。推動會失敗,因爲額外的頭,如果你重寫這個,其他開發人員可能會得到你的頭,而不是他們拉和更新時應該得到的頭。 –

+0

是的。可以申請一些從http://stackoverflow.com/questions/11661904/mercurial-pull-all-remote-bookmarks-without-knowing-names。 – santiagopim

+0

@SteveKaye:這確實是我不想使用書籤的原因,因爲如果我在合併'main'之後推動,那麼這將成爲'main'的提示,儘管其他開發者需要另一個'main'頭。 – Sylvain

相關問題