正确的版本提交

别告诉我你作为一个程序员没用过svn或git类似的版本工具!不过大部分程序员虽然在开发时用他们,但是不是只把他们当作一个备份工具?首先,我们要明确一点,他们是版本工具,不是简单的备份工具。如何能更多的发挥他们的版本功能,做好每一次代码提交是关键。我们要把版本工具变成一个能够产生沟通交流和文档编写的一个宝贵工具。

总是有这样的情况,我们需要找到一个很久之前的版本,久到开发人员根本记不得是那个版本提交的。只好去查log日志,由于可能只记得大概的提交日志。就开发逐个屡提交的msg,可是坑爹的msg都是简单几句“细节调整”、“小修改”、“错误处理” ——- 你XXX的啊!!!!这可怎么找。

所以,最首要的,写清楚这次提交做了哪些修改。为了省事,你可能会这么写commit msg:

~# svn ci -m ‘asdf’

或许系统管理员为了避免开发人员提交时写太少的注释信息,设定了hooks来限制开发者。但是你会多写点信息,不过是这么写:

~# svn ci -m ‘asdfasdfasdfasdfsadfasdfasdfasdfasdfasdfasdfasdfasdf’

冥冥之中,淡淡的忧伤在心中萦绕~

对于其他团队开发成员,根本搞不楚你的这次提交修改了什么。对于你自己的提交来说,刚刚提交的话,也许还记得这次修改做了什么。等到了明天可能就忘了,更别提修改了哪些文件、哪个文件的哪一行代码了。类似“小修改”、“错误处理”这样的msg信息根本不能帮助你了解这个版本,没有表达清楚你所做的修改。如果这样想要找到版本的修改的话,只能去查看所有修改过的文件,花掉很多本不改浪费在这上面的时间(有可能需要几个小时)。开发成员或许只需要1分钟不到的时间就可以完成这个提交注释,为什么不去做呢?

另,每次代码的修改一定都有原因,不然的话你为什么要去修改他呢?提交时一定要写清楚为什么要做这些修改,否则当其他开发人员进行修改时,会引入一些原作者已经发现和已经避免的问题。或许你会说你的代码注释写得很详细,已经说明了做这次修改的原因和意义。但是在commit msg写上修改的原因可以免去其他开发人员去查看代码的麻烦,如果你没有在文件代码里写上注释信息,劝你还是在提交时写上修改原因的好。

还有,确保每次提交只有一个修改。如果一次修改即“替换了首页的图片”,又“换了详情页面的一张图片”,还“修改了SESSION共享的bug”,刚刚提交之后,你还能知道这次修改自己修改的哪些文件是修改了哪些内容,时间长就又忘了。所以,一次commit只提交一次修改。这样做,可能遇到的情况就是经常需要去提交新版本,这也是打算想让整个团队使用分布式git代替svn的原因之一。而且这么做也可以让你更加专注“focus”,focus到正在修改的问题直到你把这个问题解决提交为止。这样也会更有效率,开发时遇到的跟当前bug不相关的问题,先记录下来稍后再解决。

同时,如果一次修改分几次提交同样会有问题,这个修改时很难review。这种情况通常也是你同时在修改多个问题导致的,因为你没有focus,导致这些问题可能都没有被解决掉,出现了很多只修改了一半半途而废的问题。到提交的时候,自己也闹不清楚哪些个修改对应哪次提交。所以还是提倡一次只专注解决一个问题。FOCUS!!

 

最后总结一下,什么才算的上一个正确的提交:

1.写清楚这次提交做了哪些修改;

2.写清楚这次提交为什么要做这些修改;

3.确定这次提交只做一个修改,且不要把一次修改分多次提交,以确定这次提交的版本是一个有效版本;

4.最最重要的,不要版本工具当成备份工具来使用。