描述使用版本控制(VCS或DVCS)的工作流程
我想在使用vcs或dvcs时学习其他人的工作流程。
请描述您的策略来处理以下任务:
随意组织您的答案,不按任务分组,但按照您认为相关的任何分组进行分组,但请由VCS / DVCS组织(请勿混用)。
谢谢。
所有VCS在提到的各种任务中使用的主要特征是分支 :以协作方式隔离开发工作的能力。 由于它是一个中央VCS,一些开发人员可以在同一分支上进行协作,对文件进行悲观或乐观锁定,以便开发平行历史记录。
但作为VCS对分支有两个主要影响:
〜“出版”过程是一个积极的过程,会产生直接的后果,
〜“消费”部分(更新您的工作区)是被动的(您必须在更新工作区时立即处理由其他人发布的更改)
现在:
实现一个功能
任何VCS都会通过创建一个分支来实现这一点,但是令我非常惊讶的是,“特性”分支并不容易:
*功能可能变得太复杂
*它可能会及时准备下一个版本
*只有部分可能需要合并回主开发分支
*它可能取决于尚未完全完成的其他功能
因此,您需要小心处理功能分支和提交的方式:如果它们与同一个功能紧密相关,那么它会很顺利(当您需要它时,将整个事件合并回您的主开发分支) 。 否则,部分合并对于这些工具并不容易。
修复错误
开发期间和发布后的错误修复之间的区别在于,在前一种情况下,您经常可以在同一分支中进行线性修改,因为在后一种情况下,您将不得不建立一个错误修复分支,并决定哪些错误需要回到当前的开发分支。
代码审查
它最好与外部工具(如Crucible)一起使用,并广泛使用VCS功能(如责任或注释),以便在审查后更好地分配代码修复。
重构代码(发布代码审查)
如果重构很小,它可以在同一分支中继续。 但是如果它很大,需要设置一个特殊的分支,并在开始重构之前完成单元测试。
加入补丁
与最后一点相同的评论。 如果补丁很大,需要创建一个分支。
发布您的应用的更新版本
VCS在发布您的应用程序时只会让您感到满意,因为它不是发布管理工具。
您将需要以前识别要发布的版本(标签),但在此之后会出现部署过程,其中包括:
VCS和发布管理的关键是:
发布机制也会影响二进制相关性:
您也可以选择使用源代码依赖项(并获取您自己需要的其他内部项目的所有源代码),并且VCS可以很好地适应这种情况,但重新编译所有内容并不总是可行的。
与来自VCS的DVCS (分布式版本控制)的主要区别在于它(根据其分布式工作的本质)完成一件事,而且是一件好事:
合并 。
所以你可以从这个角度看待你提到的任务。
分支仍然会被创建,但并不是所有的分支都会被其他开发者看到。 其中很多将不会真正离开您的本地存储库。
作为DVCS对合并有两个主要影响:
〜出版过程是被动的:你的推动可以被其他回购忽略。
〜“消费”部分是一个活跃的部分:您可以在将其合并到您的分支之前检查推送给您的内容,并决定要合并的内容以及来自哪个人(而不仅仅是因为您都在“科”)。
现在:
实现一个功能
正如我在CVCS(中央VCS)答案中详细说明的,“特征”分支背后的难点在于许多子特征将最终交织在一起。
这是DVCS将发光的地方,因为它们允许您重新组织它们的本地(如“尚未推送”)历史(Mercurial的变更集,SHA1提交或Git),以促进部分合并或子功能分支创建。
修复错误
如果你愿意的话,你几乎可以为每个bug修复创建一个分支。 这个想法是确保一个错误修复是通过在开发分支中合并回来的一个简单的线性集合来识别的(或者如果这个被释放的话,维护分支)。
我更喜欢确保首先在开发分支之上重新设置bug修复分支(以确保我的修复仍然符合可能在所述主分支上并行完成的任何工作),然后将该分支合并到错误修复一个(快进合并:主分支现在引用所有修复)
代码审查
责备或注释功能仍然有助于在代码审查期间分配任务,但是这次,所有开发人员不一定在一个站点上(因为它是* Distributed * VCS),并且不具有相同的识别方案(例如不使用相同的LDAP)。
DVCS组织代码审查的方式是将新更改推送到特殊的代码审查仓库,该仓库将:
重构代码(发布代码审查)
他们是在开发人员的本地回购,在一个分支上完成的(因为它很容易合并回来)
加入补丁
与上一节相同的过程。
发布你的应用的新版本(桌面,网页,手机,你会不同地对待他们?)
实际的发布过程只需通过特定的标签(标签)版本的软件即可启动。 (“发布管理流程”的其余部分,即部署和配置部分在CVCS答案中有详细说明)
问题是,用DVCS:
“你的软件的官方版本从哪个版本库中出来?”
您需要建立一个“中央”或“官方”存储库,它将扮演以下角色:
所以它既可以用于发布目的,也可以用于新的开发目的。
链接地址: http://www.djcxy.com/p/49267.html上一篇: Describe your workflow of using version control (VCS or DVCS)