Von*_*onC 43
所有VCS用于您提到的各种任务的主要特征是分支:以协作方式隔离开发工作的能力.由于它是一个中央VCS,因此几个开发人员可以在同一个分支上进行协作,对文件进行悲观或乐观的锁定,以便开发并行历史记录.
但作为VCS对分支有两个主要影响:
现在:
任何VCS都会通过创建分支来实现这一点,但让我感到非常惊讶的是,"功能"分支并不容易:
*功能可能会变得太复杂
*它可能会及时准备好以便下一个版本
*只有部分功能可能需要合并回主开发分支
*它可能依赖于尚未完全完成的其他功能
所以你需要小心管理你的功能分支和你的提交:如果它们与同一个功能紧密相关,它会很顺利(你需要时将整个东西合并回主开发分支) .否则,使用这些工具不容易进行部分合并.
在开发期间和发布之后的错误修复之间的区别在于,在前一种情况下,您通常可以在同一分支中线性地执行此操作,因为在后一种情况下,您将必须建立错误修复分支,并确定您将遇到的错误需要反向移植到当前的开发分支.
它最好与外部工具(例如Crucible)一起使用,并广泛使用诸如blame或annotations之类的VCS函数,以便在审核后更好地分配代码修复.
如果重构是次要的,它可以在同一分支中继续.但如果它很大,需要设置一个特殊的分支,在开始重构之前完成单元测试.
与最后一点相同的评论.如果补丁很大,则需要创建分支.
在发布应用程序时,VCS只会让你到目前为止,因为它不是一个发布管理工具.
您需要先确定要发布的版本(标签),但之后会出现部署过程,其中包括:
VCS和发布管理的关键是:
释放机制也会对二进制依赖性产生影响:
您还可以选择处于源依赖项(并获取您自己需要的其他内部项目的所有源),并且VCS很适合于此,但重新编译所有内容并不总是可行/实用.
Von*_*onC 36
与VCS 的DVCS(分布式版本控制)的主要区别在于,它(通过其分布式工作的本质)可以做一件事,一件事情:
合并.
因此,您可以从该角度查看您提到的任务.
分支机构仍将制作,但并非所有分支机构都能看到它们.其中很多实际上不会离开您的本地存储库.
作为DVCS对合并有两个主要影响:
现在:
正如我在CVCS(中央VCS)答案中详述的那样,"功能"分支背后的困难在于许多子功能最终将交织在一起.
这是DVCS将发光的地方,因为它们将允许您重新组织其本地(如"未推送")历史(Mercurial的变更集,Git的SHA1提交),以便促进部分合并或子功能分支创建.
如果需要,您几乎可以为每个bug修复创建一个分支.我们的想法是确保通过在开发分支(或维护分支,如果发布)中合并的简单线性集合来识别错误修复.
我更喜欢确保首先在开发分支之上修改bug修复分支(以确保我的修复仍然符合可能已在所述主分支上并行完成的任何工作),然后将该dev分支与bug-fix one(快进合并:主分支现在引用所有修复)
责备或注释功能仍然有助于在代码审查期间分配任务,但这次,所有开发人员不一定在一个站点上(因为它是*Distributed*VCS),而不是具有相同的识别方案(例如,不使用相同的LDAP).
组织代码审查的DVCS方法是将新更改推送到特殊代码审查存储库,该存储库将:
它们是在开发人员的本地仓库中,在一个分支中完成的(因为它很容易合并回来)
与上一节相同的过程.
实际的发布过程只是由您的软件的特殊标识(标记)版本启动.("发布管理过程"的其余部分,即部署和配置部分在CVCS答案中详细说明)
问题是,使用DVCS:
"软件的正式版本将来自哪个存储库?"
您需要建立一个"中央"或"正式"存储库,它将扮演以下角色:
因此,它既可以用于发布目的,也可以用于新的开发目的.
| 归档时间: |
|
| 查看次数: |
6346 次 |
| 最近记录: |