逆锋起笔|为什么把几十亿行代码放在一个库?,Google( 二 )
代码评审的依据是《Google代码风格指南》 。 谷歌有一个叫做Critique的工具 , 可以查看每一行代码的历史演变 。
2.7自动测试
评审完成后 , 会自动运行测试 。 通过测试以后 , 代码就合并进了Piper仓库 , 整个过程不需要人工干预 。
文章图片
03单一代码仓库的优点
(1)统一的版本
整个公司的代码 , 有统一的版本和路径 , 不存在找不到文件的最新版本这样的问题 。
(2)广泛的代码共享和复用
任何人都可以浏览和使用全公司的代码 , 这大大促进了代码的共享和复用 。
(3)简化的依赖管理
如果你是库文件或者API的作者 , 因为所有人的代码都在一个库里面 , 所以很容易找到依赖你的所有下游代码 。
每当代码变动 , 所有依赖你的代码都会自动构建 。 如果有大量的构建失败 , 那么系统会自动撤销这次提交 。 这样也保证了所有代码依赖的都是最新版本 , 避免依赖不同的版本所导致的冲突 。
【逆锋起笔|为什么把几十亿行代码放在一个库?,Google】另外 , 由于代码的边界很清楚 , 所以不会发生循环依赖 。 而且 , API的作者也很容易发现 , 别人怎么使用他的API 。
(4)原子性变动
由于每次代码变动所导致的影响 , 都在一个仓库里面 , 所以都属于原子性的变动 。 因此 , 很容易撤销 , 或者预先测试它所造成的影响 。
为了防止错误提交 , 谷歌引入了”预提交”(即在提交之前 , 先分析一下依赖它的代码是否会构建失败) 。
(5)大规模代码析构
单一代码仓库为查找和分析代码 , 提供了巨大的方便 。
Google的静态分析引擎Tricorder定时运行 , 对代码进行分析 。 比如 , C++11标准公布以后 , 很容易找到所有需要改进的变量声明语句 , 进行性能优化 。 该引擎还对许多错误提供''一键修正''的功能 , 同时产出大量的统计数据 。
此外 , 编译器团队也会对不同语言的所有代码进行分析 , 找出不合理的代码和过时的API 。
04单一代码仓库的缺点
单一代码仓库的主要缺点是 , 所有工具都必须自己写 , 因为市场上没有能够管理这种规模的代码仓库的软件 。
05总结
单一代码仓库 , 适合提倡透明开放的大型软件公司 , 不适合小公司和有大量私密代码的公司
文章图片
推荐阅读
- 科技小乐乐|为什么国内有人已拿到iPhone12却不敢开机?
- |人类为什么一般只吃食草动物的肉,而不吃食肉动物的肉?
- 鸡蛋|为什么鸡看到鸡蛋被人类拿走了,却不会生气?
- |地球物种繁多,为什么没有三栖动物,又进化出来的可能吗?
- |骨灰在自然界很多年以后会变为什么?有何科学依据?
- 淘宝|为什么大学生网购,更多的选择淘宝,而不是京东?原因很真实!
- 蟒蛇|巨蟒有天敌吗?为什么它们的数量如此稀少?
- |为什么农村老人常说:有鹅的地方,就不会有蛇!有何科学依据?
- symbian|诺基亚的塞班系统究竟差在哪里?又为什么会被迅速淘汰?
- 月球|登上太空的宇航员,为什么眺望地球时会产生恐惧?他们看到了什么?