团队A的工作分支方针:
- 代码完成编译和构建,并通过所有的单元测试。
很好,现在我们有两个分支了。一个稳定的分支(主干)和一个稍微不那么稳定的分支(团队分支)。团队分支是红色的,表示它不太稳定;例如:这个分支通过了单元测试,但是它可能还没有完成集成测试,所以还没有稳定到可以发布的状态。好,现在团队有地方可以检入正在进行中的工作了!
嗯,那要是需要同步不同的分支时应该怎么做呢?往下看。
从工作分支公开发布(publish)至主干
最终(我们希望)一个故事可以进入到“完成”状态。或者更明确地说,最终工作分支会达到可发布状态。此时我们可以(而且应该)将此分支公开发布到主干上,比如将工作分支上所有的新代码复制到主干上。完成后,主干与工作分支就完全相同了。
我们可以称此过程为“公开发布”,因为我们已经完成了一些工作,而且现在已经准备好将其“公开发布”回主干供发布用。这样说只是一个有用的隐喻。
下面是一个示例。假设我们已经实现了两个故事:“开户(Register)”和“存款(Deposit)”。它们都是“已完成”的,也就是说通过了单元测试、集成测试,并且处于“可发布”状态。我们已经开始处理“取款(Withdraw)”这个故事,但是它还没有“完成”。任务板看起来会像下面这张图示一样:
每个黄色的即时贴表示一项任务,也就是要完成故事需要做的一项工作。例如编辑类X,更新构建脚本,等等。每项任务通常包含一个人日的工作,每个故事通常包含3至8个人日的工作。
分支的过程会像下面这样:
我们的第一个团队实现了“开户”故事,并将代码检入到工作分支中,运行集成测试,修正一些问题,再次检入,再次运行测试,通过了!“开户”故事就“完成”了!然后将其公开发布到主干之中。
接下来实现“存款”。只需要执行一次检入就可以了。集成测试通过,我们再次把代码发布到主干之中。
现在团队正在实现“取款”故事。他们已经完成两次检入了,但是这个故事仍然没有完成。
注意“发布到主干”并不是说我们仅把某个故事的代码直接拷贝到主干中,而是意味着所有的工作拷贝到主干中,做一次完整的同步。
这样就带来了两个很有趣的问题:
- 如果团队同时在实现多个故事,该怎么办?
- 如果其他团队也正在向主干发布内容,又该怎么办?
我们还是一个接一个地来看这些问题。
如果团队同时在实现多个故事该怎么办?
如果团队每次实现一个故事,将代码发布到主干中并不算什么大不了的事情。只要这个故事相关的代码在工作分支上完成实现并通过测试,我们把所有的相关内容从工作分支上复制到主干上就可以了。搞定!
先等一下。如果团队中同时开发多个故事呢?如果“开户”故事完成了,而“存款”还在进行中呢?