2012-01-16 33 views
5

我有一個應用程序,1.0版本。我現在需要開始工作2.0版本,但同時維護和修復版本1.0中的錯誤。工作流程與項目的兩個版本中的工作水銀

1.0中修復的錯誤將合併到2.0版本中,但是沒有新功能將從2.0回發到1.0版本。

我理解但是如何分行工作,我需要能夠在同一時間在同一個工作文件夾分支間的切換上兩個版本的工作是不實際的。我希望能夠同時運行這兩個版本的代碼。

什麼是典型的設置或工作流程,能夠使用名爲分支在同一時間同一應用程序的兩個版本的工作?即使用一個文件夾中的一個分支和另一個文件夾中的另一個分支?

難道我只是將版本庫克隆到版本爲2.0的新文件夾中,並將分支設置爲2.0版本的分支?

我有點新的含汞所以請原諒我,如果這聽起來有點幼稚。

+1

嘗試:http://nvie.com/posts/a-successful-git-branching-model/它針對的是GIT,但適用於Mercurial。它可以幫助你解決問題 – PostMan 2012-01-16 03:39:15

+0

我會盡量按照你的建議去做:有兩個檢出(克隆)版本的代碼,一個用於版本1.0,一個用於版本2.0。 – 2012-01-16 06:55:41

回答

7

難道我只是將版本庫克隆到2.0版的新文件夾中,並將分支設置爲2.0版本的分支?

是,對於每一個即將釋放的重要就好了單獨的克隆。但是,您應該保留主要開發on the default branch併爲每個主要版本使用命名分支。讓我通過工作流運行:

當你的1.0版本做,你做

$ cd ~/src/foo 
$ hg tag 1.0 
$ hg push http://your-server/foo 

,然後你可以繼續在該克隆對2.0版的工作。當你發現你需要修復一個bug在1.0中,你做

$ cd ~/src 
$ hg clone http://your-server/foo foo-1.x 
$ cd foo-1.x 
$ hg update 1.0 
$ hg branch 1.x 
$ hg commit -m "Starting 1.x branch" 
# now fix the bug... left as an exercise to the reader :) 
$ hg commit -m "Fixed issue123" 
# do QA to test the bugfix, make more commits as necessary 
$ hg tag 1.1 
$ hg push --new-branch 
# make a release 

--new-branch標誌,只需要在第一次推。它告訴Mercurial你確實想在歷史中創建一個新的永久分支。

你現在要修正錯誤的拉入另一個倉庫:

$ cd ~/src/foo 
$ hg pull http://your-server/foo 
$ hg merge 1.x 
$ hg commit -m "Merge with 1.1" 

通過使用named branch的1.x的系列,你總是可以使用hg update 1.x去該分支上的最新變更。把1.x想象成一個「浮動標籤」,它總是指向該分支上最尖端的變化集。

此工作流程在standard branching wiki page說明。

+1

+1。可能值得注意的是,在默認的Mercurial中,我認爲您需要'hg push -f'來強制從1.x分支推送......因爲您將推動一個新的頭部,這是不允許的,而不是「強制」 。在單一的開發路線中,額外的頭部通常會通過合併來處理,但這不是我們想要的。 – icabod 2012-01-16 11:46:16

+1

@icabod:謝謝,我已經忘記了' - 新分支'的標誌。這是'-f'的一種更受控制的形式,它可以讓你推送新的分支而不讓你推多個頭。 – 2012-01-16 13:46:47

+1

啊,我之前沒有使用'--new-branch',可能是因爲我有一個惱人的習慣創建匿名分支,爲此''new-branch'似乎不起作用。 '這對於命名分支是很好的'。我將在未來使用它:) – icabod 2012-01-16 14:06:58