工作流程与项目的两个版本中的工作水银

问题描述:

我有一个应用程序,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

难道我只是将版本库克隆到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