关于DVCS
来源:互联网 发布:filesaver.js保存文件 编辑:程序博客网 时间:2024/05/20 04:30
开发过程中一般都使用VCS工具,最普遍的工具就是svn,但是在使用过程中还是会存在一些问题。
假设一个场景
一个项目要进行开发,
- A是底层核心功能开发人员,他要对底层进行开发,并且在第一时间所有的人都要获取他的代码
- B是功能开发人员,进行一个runqian1的开发
- C,D是功能开发人员,进行另外一个runqian2的开发
- runqian1和runqian2要公用部分代码,比如同一个接口文件,并对他进行修改
假如我们用svn进行开发,这里面是有一个问题的,因为A的存在,runqian1和runqian2的开发并不能完全分开,而在开发阶段 B,C,D三个人都不能随意的提交代码,否则runqian1和runqian2都会相互影响。如果他们真的都是分开的功能也没问题,但是因为C,D是同一个功能的负责人,他们之间必须要进行代码交换,而因为svn是集中式开发,那么他们应该,必须,也只能通过svn进行代码交换。
如果
- C提交代码,要求D更新代码
- A提交代码,要求所有人更新代码
- D获取代码,A和C的,是正确的代码
- B获取代码,死菜了,因为C的代码是他不需要的,会影响他的工作,甚至都无法编译通过
这个是一个很普遍的场景,尤其是对人数多一些的小组。那么我们应该如何避免这种情况的发生呢?答案是使用DVCS系统,也就是分布式代码管理系统,例如bzr,hg等。
DVCS的出现可以方便的解决这类问题。与svn等传统VCS系统不同,DVCS并不需要一个中心服务器,每个人的开发工作区都可以认为是中心服务 器。DVCS的基础是分支,每需要一个开发工作区,都是基于已有的某个开发工作区创建一个分支,然后开发,然后进行分支的代码merge。因为这种特 性,DVCS的分支操作代价非常小。当然对于管理,发布等等我们还是需要一个中心服务器的,那么我们只要一个放在中心服务器的分支就足够了,使用完全相同 的技术和下面的各个开发工作区进行代码交换。从技术上,他们的地位是完全等同的。
根据这些,我们再使用DVCS假设一下上述的开发场景
- 在中心服务器创建技术开发版本
- A,B,C,D分别根据中心服务器创建自己的开发分支
- A进行开发,每个阶段,B,C,D基于A提供的代码进行merge,比如A自己架设一个(临时的)ftp
- C进行开发,每一阶段,D基于C提供的代码进行merge,相对D的开发来说,情况一样。他们的开发完全不影响B的开发
- 最终都开发完成,一并merge回中心服务器
这就非常顺利的避免了上面遇到的问题。而且,DVCS因为是把自己的工作区认为是代码仓库(repository),所以可以随时的提交代码,随时 记录自己的开发变更。而这个在svn当中有时就比较头疼,如果一个feature要开发时间比较长,那么中间的每一个小阶段的代码就很难记录了。
当然了,你可以说,我在svn当中采用给每个人开分支的方法解决这个问题。没错,但是,这已经就是DVCS的思想了,那么为什么不用一个现成的DVCS工具呢?
- 关于DVCS
- DVCS
- CVCS & DVCS
- 分布式版本控制DVCS
- 版本控制系统(VCS→DVCS)
- 研发团队协同作业解决方案CodeBeamer开始支持DVCS (Digitimes, 2009/7/9)
- 关于
- 关于
- 关于++,--
- 关于#
- 关于。。。
- 关于
- 关于......
- 关于
- 关于
- 关于****
- 关于
- 关于!
- 分布式搜索Elasticsearch——创建客户端(三)
- strusts2对于action请求的编码优化
- android 华为桌面一直崩溃,强行关闭的解决办法。
- linux awk 运算符
- 少编码多思考:代码越多 问题越多
- 关于DVCS
- 百度搜索结果页面的参数 原先查询字符串(oq)
- 用SSH集成框架开发项目步骤
- openstack杂记
- SGA--Database Buffer Cache
- Portal7.0升级到7.0.0.2后人员查找程序默认只能搜索uid和cn属性
- C++访问MySQL
- 探秘FPGA内部结构
- 不断刷新Portal页面时有3-5%的几率出现页面加载不完整导致的页面样式凌乱或加载不完全