版本控制 – 为什么分布式源代码管理被认为更难?

似乎很常见(至少在这里,人们至少可以向新手推荐SVN来源代码控制,因为它比分布式选项更“容易”.作为SVN的非常临时用户,在为我的许多项目切换到 Git之前,我发现根本不是这样.

在概念上更容易使用git init(或任何一个)设置DCVS存储库,而不需要在SVN的情况下设置外部存储库.

SVN,Git,Mercurial,Bazaar之间的基本功能都使用基本相同的命令来提交,查看差异等.这是一个新来的人真的要做的.

与SVN的“提交一切”政策相反,Git要求更改显式添加的方式之间的细微差别在概念上很简单,除非我错误,甚至在使用Mercurial或Bazaar时甚至不会出现问题.

那么为什么SVN认为更容易?我会认为这根本不是真的.

分布式版本系统是一个非常好的事情(tm),但是我发现采用的主要障碍是向用户教授新的SCM提供的新的可能性.

这与UI工具(半成品乌龟实施等)经常缺乏光泽的情况相结合,为许多同事们留下了空白的盯着,他们长期以来一直是为了一个好的UI工具而命名的.

另外,像CVS这样的工具,我发现人们不喜欢分支和合并,因为他们真的不想被困在整个三天合并的整个日子里,往往不确定哪一个是合适的合并.

我的观点是:告诉人们他们获得什么(不仅仅是“看这个新的酷玩具”),而是为了使用命令行是一种方式,并且频繁的不断的时间分支是一件好事.

许多系统如mercurial都带有完整的补丁队列系统,这意味着从持续集成的角度来看,您知道任何投入生产的产品已获得质量检查部门的批准.像这样的东西很难用CVS或SVN正确地做.

由于Mercurial人员将为其当前工作提供私有存储库,所有开发人员在服务器上共享开发人员树. CI系统监视开发人员树并提取所有更改,构建和执行单元测试.如果一切都通过,将更改传播到一个测试树,从那里为质量保证人员构建可交付项.添加的每个变更集都会获得令牌.当QA认为要完成某项功能时,它们会使用该令牌对“测试”树进行注释,然后相关联的更改集将自动传播到生产树.

使用这种方法,您永远不会手工提交任何生产分支或测试分支.相反,代码的状态和从质量检查中的签名决定了您的生产分支的内容,

相关文章
相关标签/搜索