svn log敲下去,看提屏幕刷出一长串修订号、交记日期和提交说明。看提多数人只看最后几条,交记然后关掉窗口。看提我见过最夸张的交记同事,翻到三个月前,看提就为了查一行配置是交记谁改的——结果发现是自己。
提交记录这东西,看提像工作日志的交记裸奔版。你写了什么、看提几点写的交记、改了哪个文件,看提全摊在那儿。交记没有隐私,看提但也没必要有。团队协作的真相,往往就藏在这些条目里。有个项目,后端同事总在晚上十一点提交,说明写着“修复bug”。点开一看,改了二十个文件,从接口逻辑到前端样式全动了。这种提交,代码评审的人想骂娘,但谁都懒得追究——毕竟功能能跑。
看提交记录有个窍门:别只看log,得配合diff用。svn log -v能看到文件变动列表,但真正的问题在代码里。上周排查一个线上故障,数据库连接池被耗尽。查svn记录,发现三天前有人提交了连接池参数调整,把最大连接数从50改成200。改的人理直气壮,说测试环境压测需要。但生产环境没做验证,直接部署——结果就是连接数暴涨,数据库扛不住。记录里写得清清楚楚,责任人无处可逃。这就是svn的好处,比git更强制,每个版本都有递增编号,谁也跳不过去。
有些提交记录写得跟密码似的。比如“fix”、“update”、“change”,光看这些词,你根本不知道他动了什么。碰上这种,只能挨个文件点开看。更气人的是那种把多个功能混在一个提交里的——明明改了登录逻辑,还顺手调了页面样式,甚至删了个没用的配置文件。想单独回滚某个改动?没门,要么全留要么全撤。我吃过这亏,有次想撤销一次误操作,结果把那两天的新功能全弄没了。从那以后,我给自己定了规矩:一次提交只做一件事,说明必须写清楚改了啥、为什么改。
不过也别把svn记录太当回事。它只是事实的切片,不是全部真相。有人提交勤快,每十分钟存一次档,记录里密密麻麻全是小改动;有人憋大招,攒一周才提交一次,动辄几百行代码。前者说明谨慎,后者代表信任——或者懒。要判断一个人写代码的风格,看提交记录比看代码还快。代码会撒谎,注释会过时,但提交时间线骗不了人。
最近我把项目里所有svn记录导出来,统计了每个人的提交频率和时段。发现几个有意思的规律:早上十点前的提交,大多是前一天没写完的收尾;下午三点左右的高峰,是午休后集中处理手头任务;晚上九点以后的,基本是改线上紧急bug。还有个同事,专挑周五下午提交大改动——我猜他是想周末清静,毕竟周一大家才看得到。这招挺聪明,但容易被骂。
说到底,svn查看提交记录就是个照妖镜。代码写得好不好,协作规矩有没有,责任心强不强,全在那一行行记录里。下次提交前,多花两分钟写清楚说明。不然三个月后,你自己看着“fix”两个字,也得挠头。