是的,你真的可以从HEAD开始开发

2017-01-12   出处: Everything Sysadmin  作/译者:Tom Limoncelli/梁仲兴

2014年3月15日

        在软件开发者之间经常有一个这样的讨论,是否最好去给软件做分支,做开发,然后将其合并回HEAD里,或者就从HEAD开始开发。

        Jez Humble和一些人声称后者更好。如果你在“小的分支”做修改,这可行。实际上,它比做分支会做得更好。当你将你的分支合并回去,合并得越大那个合并将会更可能产生问题。

        Jez最近发推特:


        这引起了各种推特网友的一些争论(tweeters? twits?)

        Jez与人共同写了关于这个主题的权威的书,所以他在这个领域很有权威。如果你没有读过《Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation》(Jez Humble和 David Farley著),现在请停止阅读本博客去读那本书。很认真地说,真的很值得去读。

        我要指出关于Google的幻灯片的一些东西:

        是的,所有从HEAD开始开发的10000名开发者都做得到了。人们经常说这不可能扩大规模的,然而现在它就是能做得到的例子。在“它不能工作”、“我不能让它工作”和“我推测它不能工作”之间是有很大的区别的。

        尽管Google有一棵很大的独立的代码树,但每个项目都可以独立地检索出来。就是说,如果你的项目是一个别人用的库,在时间戳T编译意味着获取库也是在时间戳T。

        用一个分支与合并方法论(branch-and-merge methodology)去做项目?当初我在Google工作时也有人用“分支与合并”。然而那些数字正在减少。我确定仍然有一些人在做这个,是出于特殊情况。不是因为我在Google看过每个项目,然而逐渐被人们默认为事实,几乎每个人都从HEAD开始开发。

        “50%的代码每个月都会变化”:那是可能发生的事,很大部分原因是Google对于删除闲置的代码很积极。如果你需要它它仍然在VCS的历史里面,所以如果它都不会被使用了为什么不删掉它?通过积极地删除闲置的代码很大程度上减少了维护税。当你只想用来做活动的项目,作出一个全局的改变(例如……改变一个库接口)是更加容易的。

        当然,那个幻灯片真正令人惊讶的地方是整个公司对于所有项目都用同一个VCS。那所需的条理性是你在大多数公司未曾见过的。我曾在更小的公司工作过,这些公司有不同的VCS软件以及对于每样小东西都有不同的VCS仓库。我惊讶于有多少公司拥有甚至不使用VCS的整个团队!(如果有一个痛苦的尖叫的Unicode 代码点,我会将它插入到这里)

        整个公司拥有一个repo你可以得到的支持是多么强大的,这甚至是很难以形容的。你可以写一个工具就一次而已,让它可以被所有项目使用。你对谁依赖于哪个库要有100%的准确的了解;因此你可以重构它,100%清楚谁会被影响以及谁需要为损坏做测试。我可能可以列出超过100个例子。我不能用文字表达出Google有竞争力的优点有多少。

        从字面意义上说不是所有的Google代码都是在一棵树上的。我在Google的时候,Chrome、Android还有其他项目都有它们自己的树。Chrome和Android是开源项目以及有很不一样的需求。那就是说,它们是“从HEAD开始开发”的,所以较早前的观点也是一样的。


Tom

免责声明:这里写的都是基于我关于Google的东西是怎么运作的回忆。我没有理由相信这些没有发生变化,但是我也没有证实它。

由Tom Limoncelli发表


【英文原文:http://everythingsysadmin.com/2014/03/yes-you-really-can-work-from-head.html】

 

{测试窝原创译文,译者:梁仲兴}

译者简介:梁仲兴,专注于云计算、自动化、网络运维领域的工作者。



声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
269° /2693 人阅读/0 条评论 发表评论

登录 后发表评论