关于SVN代码提交粒度和频率的思考
今天组内新来的一个同事问我代码提交频率的问题,他在上家公司是一个模块功能开发自测完成后再提交。而我这边采用的是最少一天提交一次,提倡粒度较小的提交, 而且是基于主干开发。采用这种方式是出于以下几点考虑:
1. 提交的粒度小,和别人冲突的可能性就小,避免代码冲突合并的痛苦。
2. 所有的开发都能看到最新的代码,在多模块协同开发的时候,可以及时的了解别人的进度,也是潜在的一个沟通方式。
3 .及时的发现问题,相对于每次提交上千行代码,几十个模块或方法,小粒度的提交倒逼开发及时的单元测试,有利于尽早的发现缺陷,而不是大海捞针般单步调试老长老长的代码。
4 .持续构建和持续发布,持续集成系统对提交的代码会自动进行静态扫描,定时的进行编译和构建,小粒度的提交能够及时的发现一些编译上或规范上的问题。
5 .代码安全,这种可能性虽然小 但也不能排除,尤其是核心模块的代码,辛辛苦苦好几天,硬盘损坏或电脑丢失就回到解放前。
6 .关于小粒度提交和主干开发,可能比较担心的就是上线问题,b需求还没开发完成,但a需求已经要求上线了,或者a模块上线后发现bug怎么办,关于这点,我的考虑是:
我们的开发和迭代比较快,基本是以周为单位,需求的粒度拆分的也会比较小和独立,所以两个需求的代码相互影响会比较小。
需求的可控性较好,我们的需求更多是内部的,压力没那么大,可以做较好的规划,说白了就是商量的余地比较大,因此冲突的可能性就小很多。
如果真出现冲突,就得需要将b需求的功能巧妙的隐藏起来,灵活的配置,灰度发布等。
总的来说我觉得这种方式适合比较敏捷的项目,对代码的结构和需求的管理要求比较高。另外不代表完全拒绝分支,遇到重大的功能修改时, 或者紧急修复线上问题的时候还是要拉分支的,只不过分支的战线尽量短。
关于SVN代码提交粒度和频率的思考的更多相关文章
- SVN代码提交冲突解决方案
SVN代码提交冲突解决方案 1.若你的代码被其他人修改并提交过了,期间你自己也修改过该文件,UPDATE的时候自己代码被覆盖. 右键——>显示日志 查看该文件的更新记录 找到需恢复的版本 右键— ...
- 统计svn 代码提交情况
统计svn代码提交,使用工具 statsvn.jar 下载地址:http://sourceforge.net/projects/statsvn/ rem 声明一个时间变量 作为文件名 %time:~, ...
- Eclipse svn代码提交冲突
Eclipse svn代码提交冲突(转) 1.Synchronize视图下查看代码冲突 1.Incoming Mode 全部update,更新到本地2.Outgoing Mode 全部commit,提 ...
- SVN代码提交
SVN代码提交(转载) 原文链接:http://www.softown.cn/post/100.html 1.SVN代码提交 1) 原则 先更新再提交: SVN是为了多人协同开发而产生的,如果你在提交 ...
- 【LINUX】SVN 代码提交之后。同步到web目录下
1 当你使用svn在成功提交一个新版本的时候,svn仓库目录下的hook文件夹下的post-commit脚本会运行 用shell写一个脚本,在提交完版本后,自动在web目录运行一下svn updat ...
- svn代码提交注意事项
先全部add,查看是否有gen和bin,然后再忽略这两个,忽略时选择最后rescury....
- svn代码冲突
转自:https://blog.csdn.net/pengweid/article/details/49821117 svn代码提交报以下错误,错误原因: [MenuUCCImpl] 代码冲突 org ...
- Subversion代码提交中的org.apache.subversion.javahl.ClientException: svn: E200007: Commit failed异常解决
: 在切换subversion服务器地址之后,发生的无法正确提交代码的问题org.apache.subversion.javahl.ClientException: svn: E200007: Com ...
- xcode 把项目代码提交到远程SVN服务器
环境 xcode 7 Mac air xcode默认支持GIT源码管理工具,但现在想把代码提交到已有到SVN服务器上,步骤如下: 1,在safari中打开svn链接地址,信任证书,输入用户名密码 , ...
随机推荐
- 数据结构算法C语言实现(八)--- 3.2栈的应用举例:迷宫求解与表达式求值
一.简介 迷宫求解:类似图的DFS.具体的算法思路可以参考书上的50.51页,不过书上只说了粗略的算法,实现起来还是有很多细节需要注意.大多数只是给了个抽象的名字,甚至参数类型,返回值也没说的很清楚, ...
- 关于 android 开发中 debug不能顺利进行的各种问题的总结
最后一条应该写反了,如果combined hover 取消勾选的话 那么 在写代码时候的悬浮提示就没有了
- Linux操作系统发展史
1984年,面对美国电话电报公司启动的UNIX商业化计划和程序开发的封闭模式,麻省理工学院的RichardM.Stallman发起了一项国际性的源代码开放的GNU(GNU's Not Unix)计划, ...
- 和redis谈一场恋爱(第二天约会了解彼此)
最近使用了Memcache,带来的便利已经让我欣喜若狂.开启了另一种又快又好的方式存储和读取数据.中间经过了一番折腾,学习了mysql,终于有学到了redis. Redis的全名是Remote Dic ...
- JavaScriptCore框架介绍
http://www.cocoachina.com/ios/20140409/8127.html 这个框架其实只是基于webkit中以C/C++实现的JavaScriptCore的一个包装,在旧版本i ...
- js012-DO2和DOM3
js012-DO2和DOM3 本章内容: DOM2和DOM3的变化 操作样式的ODM API DOM 遍历与范围 DOM2级核心:在一级核心基础上构建,为节点添加了更多方法和属性 DOM2级视图:为文 ...
- Android屏幕适配全攻略(最权威的官方适配指导)(转),共大家分享。
Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...
- Tomcat服务器原理详解
[目录]本文主要讲解Tomcat启动和部署webapp时的原理和过程,以及其使用的配置文件的详解.主要有三大部分: 第一部分.Tomcat的简介和启动过程 第二部分.Tomcat部署webapp 第三 ...
- 常用JS效果 不断进步贴 不停更新~ 纪念用~
常用效果 JS 都是Jquery 没有特殊说明 1.选项卡 用的JQuery 以后学好点再来对比 看下 /* * @parent 最外层父级元素 * @EventElement 触发事件元素 ...
- 安装RabbitMQ遇到的问题
消息队列RabbitMQ在安装的时候出现了问题.. 我这里是参考的 .NET 环境中使用RabbitMQ 进行安装的..首先声明 这篇博文没有问题.. 但是在我安装的时候发现..ErLang环境装完 ...