请描述您处理以下任务的策略:
- 实现一个新功能
- 修复缺陷(在开发和部署应用程序期间)
- 代码审查
- 重构代码(经过代码审查后)
- 合并补丁
- 发布应用程序的新版本(桌面、Web、移动端,您是否会以不同的方式处理?)
谢谢。
当涉及到发布应用程序时,版本控制系统只能做到有限的作用,因为它不是一个发布管理工具。
您需要正式确定要发布的版本(标签),但在此之后需要进行部署过程,其中包括:
版本控制和发布管理的关键点是:
发布机制还会影响二进制依赖关系:
您还可以选择处于源依赖关系中(获取您自己所需的所有其他内部项目的源代码),版本控制系统非常适合此类情况,但是重新编译所有内容并不总是可行/实用的。
现在:
如我在CVCS(集中式版本控制系统)答案中详细介绍的那样,“功能”分支背后的困难在于许多子功能最终将交织在一起。
这就是DVCS发挥作用的地方,因为它们允许您重新组织本地(指“尚未推送”的历史记录(Mercurial的更改集,Git的SHA1提交)),以便促进部分合并或子功能分支的创建。
如果您愿意,几乎可以为每个错误修复创建一个分支。想法是确保一个错误修复由一组简单的线性提交组成,这些提交合并回开发分支(或者如果已发布,则是维护分支)。
在将dev分支与bug-fix分支合并之前(快进合并:现在主分支引用所有修复程序),我prefer making sure to first rebase修复错误的分支放在开发分支的顶部(以确保我的修复仍符合可能在该主分支上并行完成的任何工作)。
责备或注释功能仍然有助于在代码审查期间分配任务,但这次,并非所有开发人员都在一个站点上(因为它是*分布式*VCS),也不使用相同的标识方案(例如,不使用相同的LDAP)。
组织代码审查的DVCS方式是将新更改推送到特殊的代码审查存储库,该存储库将:
在开发者的本地存储库中,在一个分支上完成(因为很容易将其合并回来)
与上一节相同的过程。
实际的发布过程只是通过软件的特定标识(tag)版本启动。(发布管理过程的部署和配置部分在CVCS答案中详细说明)
问题是,使用DVCS:
"官方版本的软件将来自哪个存储库?"
您需要建立一个 "中央" 或者说 "官方" 存储库,它将扮演以下角色:
因此,它既可以用于发布目的,也可以用于新开发目的。