今天组内新来的一个同事问我代码提交频率的问题,他在上家公司是一个模块功能开发自测完成后再提交。而我这边采用的是最少一天提交一次,提倡粒度较小的提交, 而且是基于主干开发。采用这种方式是出于以下几点考虑:

1. 提交的粒度小,和别人冲突的可能性就小,避免代码冲突合并的痛苦。

2. 所有的开发都能看到最新的代码,在多模块协同开发的时候,可以及时的了解别人的进度,也是潜在的一个沟通方式。

3 .及时的发现问题,相对于每次提交上千行代码,几十个模块或方法,小粒度的提交倒逼开发及时的单元测试,有利于尽早的发现缺陷,而不是大海捞针般单步调试老长老长的代码。

4 .持续构建和持续发布,持续集成系统对提交的代码会自动进行静态扫描,定时的进行编译和构建,小粒度的提交能够及时的发现一些编译上或规范上的问题。

5 .代码安全,这种可能性虽然小 但也不能排除,尤其是核心模块的代码,辛辛苦苦好几天,硬盘损坏或电脑丢失就回到解放前。

6 .关于小粒度提交和主干开发,可能比较担心的就是上线问题,b需求还没开发完成,但a需求已经要求上线了,或者a模块上线后发现bug怎么办,关于这点,我的考虑是:

  • 我们的开发和迭代比较快,基本是以周为单位,需求的粒度拆分的也会比较小和独立,所以两个需求的代码相互影响会比较小。

  • 需求的可控性较好,我们的需求更多是内部的,压力没那么大,可以做较好的规划,说白了就是商量的余地比较大,因此冲突的可能性就小很多。

  • 如果真出现冲突,就得需要将b需求的功能巧妙的隐藏起来,灵活的配置,灰度发布等。

总的来说我觉得这种方式适合比较敏捷的项目,对代码的结构和需求的管理要求比较高。另外不代表完全拒绝分支,遇到重大的功能修改时, 或者紧急修复线上问题的时候还是要拉分支的,只不过分支的战线尽量短。

转载于:https://www.cnblogs.com/zhanjindong/p/think-about-svn-commit-granularity-and-frequency.html

关于SVN代码提交粒度和频率的思考相关推荐

  1. Eclipse svn代码提交冲突

    Eclipse svn代码提交冲突(转) 1.Synchronize视图下查看代码冲突 1.Incoming Mode 全部update,更新到本地 2.Outgoing Mode 全部commit, ...

  2. 统计SVN代码提交情况-官方方法

    目录 准备 开始 结果 参考资料 SVN命令统计项目代码行数,开发人数,提交占比....... 准备 工具:satasvn.jar 下载地址:StatSVN download | SourceForg ...

  3. SVN代码提交数量统计

    StatSVN介绍 StatSVN是一个Java写的开源代码统计程序,从statCVS移植而来,能够从Subversion版本库中取得信息,然后生成描述项目开发的各种表格和图表.比如:代码行数的时间线 ...

  4. svn代码提交和合并

    本文转自:http://blog.sina.com.cn/yueyuedexiaonuanfang 多人开发时有可能遇到冲突 1,重名文件  提交失败. A添加一个111.txt提交成功了.版本库可以 ...

  5. linux 代码统计工具,Shell脚本实现的基于SVN的代码提交量统计工具

    最近没啥事,就用bash写了一个基于svn的代码统计小工具. 可以指定统计的目录,默认递归统计子目录. 目前还没有屏蔽指定目录的功能.哈 代码比较粗糙.不过先晒出来. #!/bin/bash - #& ...

  6. commit是直接提交到远程吗 svn_xcode 把项目代码提交到远程SVN服务器

    环境 xcode 7  Mac air xcode默认支持GIT源码管理工具,但现在想把代码提交到已有到SVN服务器上,步骤如下: 1,在safari中打开svn链接地址,信任证书,输入用户名密码 , ...

  7. SVN代码迁移到Gitlab(保留SVN的提交记录)

    概述 项目开发前期是用自有 SVN 进行项目管理的,开发完成后,因客户要求,需要将源码提交到客户提供的 Gitlab,故进行项目迁移. 主要步骤 1. 账号对应 2. 拉取 SVN 代码记及日志 3. ...

  8. 如何使用IDEA将代码提交至SVN

    专属目录 如何使用idea将代码提交至SVN 引言 如何提交 首先开启IDEA版本控制集成 查看并连接仓库 共享目录 提交代码 SVN 默认目录 附录 总结 如何使用idea将代码提交至SVN 引言 ...

  9. linux svn怎么提交代码,linux提交代码到svn服务器

    详解Linux命令行下常用svn命令 本文讲述了Linux命令行下常用svn命令的使用方法,希望对您有所帮助. 1.Linux命令行下将文件checkout到本地目录 svn checkout pat ...

  10. 将项目代码上传至svn服务器,xcode 把项目代码提交到远程SVN服务器

    环境 xcode 7  Mac air xcode默认支持GIT源码管理工具,但现在想把代码提交到已有到SVN服务器上,步骤如下: 1,在safari中打开svn链接地址,信任证书,输入用户名密码 , ...

最新文章

  1. Cocos2d-X数据、动作、消息的基本操作
  2. 正在CPU上运行的进程_进程的概念,系统资源分配的单元
  3. Java之主数据类型的包装
  4. tcp/udp socket编程异同
  5. 【NLP】NLP模型BERT和经典数据集!
  6. 手把手教你接入前端热门抓包神器 - whistle
  7. 无忧无盘服务器,无忧网维无盘系统新手快速部署.doc
  8. plupload怎么设置属性_腾达无线路由器怎么设置,这些是你要知道的
  9. base64解密后乱码_血泪教训!记一个JavaMail 附件乱码的问题
  10. python 查找IP地址归属地
  11. ds6708 symbol 驱动_symbol DS6708设置及使用手册中文版.pdf
  12. C# winform项目开发规范
  13. 自用PHP版H5微信公众号吸粉引流的恶搞小游戏 当天收获500+粉丝
  14. 163电子邮箱怎么注册申请?手机号注册电子邮箱的小技巧
  15. 分享一款好用的ssh工具
  16. java实现mysql自动更新创建时间与更新时间的两种方式
  17. 64位进程调用32位DLL详解
  18. shmget 共享内存 同步读写文件一个进程写,多个进程读,读和写同步,边写边读
  19. 通过FTP以及SMB实现电脑,手机,ipad的文件同步访问
  20. 【物联网开发平台MQTT快速接入使用】

热门文章

  1. memcached 安装与简单实用使用
  2. Win7如何设置标准账号无法访问我的D盘
  3. 【BZOJ3631】松鼠的新家 树链剖分
  4. 图像等比例缩放的函数封装(PHP)
  5. Discuz! 7.2 二次开发基础 (一)
  6. 程序集与托管模块的概念
  7. 组合总和3 leetcode 216
  8. CSS学习笔记 -- Position(定位)
  9. (3.13)常用知识-元数据函数
  10. python中时间、日期、时间戳的转换