版本控制工具的使用与CodeReview

     也许对非CS专业出身的童鞋来说,投身码农界遇到的最大困难就是缺少基础概念的认知。新人入职后,对自己提交的第一段代码肯定是记忆犹新,对第一次CodeReview更是难以忘怀,因为这些新人们多半会遇到 类似的经历。因为我以前没有经历过正式的CodeReview环节,对其流程和意义都缺乏最基本的概念,所以特想记录一下自己这段时间对SVN、Git这两种版本控制工具和CodeReview的理解。
     刚进公司的3个月里一直在使用SVN来管理代码,之后切换到Git上,所以就先从SVN环境下的CodeReview说起。CodeReview顾名思义就是为了让代码审查,自己写好的代码让组里的其他同事和主管来检查自己的代码,看看是否存在错误和有待改进的地方。通过CodeReview环节,可以让组里的同事知晓彼此的工作内容、逻辑思路和代码风格,取长补短、共同进步。但是任何一个项目的代码量待到完工时都会比较庞大,不可能每次都把所有的代码查看一遍,按照常识就知道每次只需把变化的代码拿出来进行CodeReview即可。所以版本控制软件都会有一个比较不同版本的代码变化功能,即 diff。使用SVN进行不同版本号之间的代码变化操作时,可以使用如下的指令:svn diff -r PreVision:NewVersion  ./src/main/java/A.java ./src/main/webapp/B.jsp > /home/Armstrong/A_B.diff 这样就把两个不同版本号下的A文件和B文件的区别输出到一个A_B.diff文件里了,在Vim下查看会发现有很多+号和-号,分布代表添加和删除。在Windows下使用小乌龟Tortoise客户端的童鞋可以直接使用TortoiseIDiff的功能进行比较。在使用命令行操作的时候要注意旧版本号和新版本号之间的冒号没有空格,即PreVersion:NewVersion,千万不要画蛇添足在二者之间加了空格,否则你会遇到 svn: E155010错误,如下图所示。
在指定要比较的代码文件时,一定要指定详细的代码位置,比如当前目录下的 src 文件,即 ./src ,千万不要小看这个 ./ ,否则SVN 会从根目录下进行查找,显然木有这个文件,于是你会遇到 svn: E155007错误,如下图所示。

     当你一切操作正常,生成 xxx.diff文件之后,接下来就是要找个合适的工具来查看这个diff文件了,目前有很多这样的 工具,比如开源的Review Board (基于Django),找到指定的代码目录位置,上传自己的diff文件,写上必要的简介,然后添加同事或组的邮箱即可,剩下的就等着大家来Review你吧。
     3个月之后我们组的代码开始切换到Git来管理,刚开始大家都各种不适应,遇到了各种“奇怪”的问题,现在看来都是因为我们当时对Git不熟悉,缺少基本的概念认知,熟悉之后就发现Git真的比SVN好用太多。具体的Git使用指南这里是肯定不会写的(暂时写不了啊,因为Git还有很多功能我没用过),最基本的几个吸引点:CodeReview的时候再也不用去翻log找新旧两个版本号了,开发新功能时直接拉分支branch,分之间切换太方便了,也不要自己去生成diff文件了,直接在Gerrit里面就可以查看了,而且版本间的diff查看效果比SVN(Review Board)的要好看很多,看起来很清爽干净。唯一的“不爽”是使用SVN时,可以自己随时提交代码到代码库,进而进行线上发布更改;使用Git之后,每次提交的代码必须要得到主管的verify之后才可以进代码库,进而才能线上发布。整个流程确实要正规很多,但是修改一些小问题的时候就变得有些繁琐了。
     关于SVN、Git和CodeReview还有太多的话题可以去写,暂时就只写到这里,等到时机成熟了再继续写。有空可以看看耗子叔叔的这篇文章 《从CodeReview谈如何做技术》,灰常赞!
     此外使用Eclipse IDE开发的童鞋,强烈推荐使用  AnyEdit插件,直接帮你把多余的空格去掉,顺便把Tab键改成4个空格。当然你也可以直接在Eclipse里面设置Tab键用4个空格来表示, 参考如下链接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值