我们的团队一直埋怨说我们的代码规模太大,结构太复杂,维护难度大而成本高。
最明显的一个弊病,就是在clearcase里面打开一个文件的version tree,密密麻麻,横七竖八,我们戏称为"蜘蛛网"。
然而昨天一位出差在外的同事,在维护公司另外一个产品的时候,有了惊喜发现:
我们的代码规模比起来还是差得远!
有图为证:
我的评价只有一个字:
晕!
PS:
解释一下,有些朋友没有用过版本控制软件的version tree,可能不大明白。
这个是version tree,是一个文件(注意,只是一个文件)的版本和分支历史,一般的版本控制软件都会提供类似的视图。
图上蓝色直线条的是这个文件的不同分支和这个这个分支下的不同版本,红色的线条是code merge,就是从一个分支的某个版本merge 代码到另外一个分支上时为了表示这种merge关系而增加一种表示方式。
从图上看,这个文件的分支过百了,版本应该过千,红色的merge线在某些地方已经要凝成实体了。这表明在这些版本之间有非常频繁的code merge。
再补充一下:
这个图片里面有些地方红线密集程度有些不大对劲,某些分支几乎每个版本修改都有被merge。正常开发中不应该是这样的,通常都只会是某个或某几个版本被merge。
猜测出现这个情况的可能,有一种解释就是可能在开发时使用了某些自动merge的工具,当该分支每出现一个新版本时就自动merge到某个目标分支,以保证两个分支代码的高度一致。当然这个无法证实,只是我的一个猜测。
分享到:
相关推荐
信息隐藏技术实验教程中diamondreplace.m的子涵数replace32fun.m
fun转fun转fun转换fun转换fun转换fun转换fun转换fun转换fun转换fun转换
Pku acm 第1579题 Function Run Fun 代码,有详细的注释,动态规划
boost库中,mem_fun使用实例代码, 注意要有boost库才能编译. 用于将成员函数转化为函数指针.
matlab开发-structfun2。对两个输入结构的每个字段应用二进制运算函数
是路径规划的实用方法,包括随机梯度算法,相对梯度算法,包括轨道机动仿真、初轨计算。
可预测第二相洗出过程中的尺寸与面密度(MnS为例)
Coding4Fun控件库,包括一些Windows phone控件
FUN3d,非结构求解器的编译过程,非常详细,包括后处理等
DevFun - Developer (Fun)ctions A developer targeted library to facilitate the development and testing of Android apps by enabling the invocation of arbitrary functions and code using tagging ...
转账Fun with Joe and Bob
Fun Input Toy MAC下得中文输入法
5uonly_fun.apk
Coding4Fun WP开发
verilog uart ip, 代码参考:www.fpga4fun.com 内有说明
fun noughts and crosses game (tic tac toe)
编写形如void fun(int *a1, int *b1, int *a2, int *b2)的函数,该函数帮助姑苏慕容将四个形参指向的整数互换(a1指向的整数与a2指向的整数互换,b1指向的整数与b2指向的整数互换)。 在主函数main()中输入四个...
图论〔Graph Theory〕是数学的一个分支。它以图为研究对象。图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个...
BPSK CODE have fun everyone
Docker for Fun and Profit