源码管理的新15条建议

作者:张克强    作者微博:张克强-敏捷307

建议之1:使用好的配置管理工具,也称为版本号控制工具(Version Control), 比方Git,SVN。 请彻底抛弃 VSS。假设是新採用配置管理工具,CVS已经不再是选项。 配置管理工具与版本号控制工具能够理解为指的是同样工具。

建议之2:抛弃古老的配置管理三库做法,常说的三库是指开发库(动态库)、受控库和产品库(静态库)。做法是开发库->受控库->产品库。 在当年没有强大版本号控制工具的“古代”,三库做法是不得不的选择。而在现代版本号控制工具(比方CVS。SVN。Git等)的支持下,三库做法变得落伍了。

建议之3:纳入配置管理的文件的名称里不要含有版本号号。

当前的配置管理工具都有强大的版本号控制功能,而仅仅要在文件名称中增加版本号号,那么相当于放弃工具的版本号控制功能,而仅仅是把配置管理工具当成了普通的存储空间,就像共享文件夹、FTP一样。

建议之4:必须自己提交代码。而不是让别人代劳。有一些团队为了保证代码库的干净。让一个人专门负责审核和提交代码。

这并非一个好习惯。

源码管理并非为了保持代码的纯净。起码在开发过程中不是这样。它的目的是让团队更频繁的集成各自的工作,当有问题的时候能够回退。

建议之5: 没有进入版本号库,它就不存在,“工作进展的唯一标准就是代码进了版本号库”。假设坚持运行这一条的话。发现其它的好习惯会随之而来。

把任务分成小块所以常常提交代码,更加频繁的更新。集成代码。最重要的是,常常提交代码说明了正在做东西。

建议之6:识别代码配置项和非配置项。

非配置项的样例有target文件夹,.class文件,.clashpath,.project, .sonar, thumbs。debug文件夹等等。利用ignore功能把非配置项忽略掉。代码配置项要完整,在别处能编译得到同样结果,可是又不干扰别处的工作环境。

建议之7:每一个团队应当对代码配置项和非配置项有所说明,不要假设每一个团队新人都是代码配置管理达人,小心自以为是的新手增加一些自以为是的垃圾。尽管能够删除,但发现再删除,其本身就是成本。

建议之8:依赖项也须要增加到版本号库,或者维护好相应的库,当中最重要的是构件库。

同一时候也包含图片,编译脚本,数据库脚本,自己主动化測试等等。

建议之9:总体环境在云计算条件下也是能够成为配置项,环境中最突出的元素是基础数据。当须要多种不同的环境(比方干净环境、仿真环境、某个时间点环境)进行调试、測试的时候,得到配置管理的环境在1分钟之内部署出来,那是多么高效的事情。 測试人员爱死这个了!

建议之10:避免表面CMMI做法-仅仅管理维护一个受控库,展现给评估组和应付各类检查。而实质上,项目团队使用另外的库开展日常工作,仅仅在应付检查时才把强制要求的交付物拷贝到受控库。 这样的做法满足CMMI评估。但实质上没有发挥配置管理的很多其它优点。古老的三库方案恰恰就是这样子的。

建议之11:了解最普通的多分支开发。

多分支开发是最经典最常常使用的模式,不管是否採用,应当知道多分支是怎样玩的:怎样拉分支?什么情况下拉分支?怎样合并到主干?怎样再从主干更新到分支?怎样合并到其它分支?什么情况下合并分支后不再维护分支?合并冲突怎样解决?

建议之12:守护主干+先锋分支,在主干上修复缺陷以及应急响应,而把新功能放到分支上开发,在分支上測试通过后合并到守护主干,再发新版。

这样的做法适用于承担大量运维改动的情景。也很多数软件产品属于这样的情景。

建议之13:主干开发。主干开发有两种情况。情况1:还没有掌握分支开发,仅仅会主干开发。情况2:充分掌握了分支开发之后。主动选择主干开发。显然的建议是指情况2。主干开发风险高。效率也高。值得码匠们好好研究。实现高质量而且高效的主干开发并不绝对的困难。收益是绝对划算的。

建议之14:单分支开发。单分支开发事实上与主干开发没有本质区别。须要採取主干开发的全部方法,日常工作在分支上进行,主干用于应急响应。两者须要频繁的双向同步。

这样的模式是兼有守护主干和主干开发的优点,但显然的复杂度提升了。

建议之15:全部的配置项一起得到基线管理。 主要包含源码、文档和測试代码,假设不在同一个库中,那么须要专门的基线文件来说明同一基线的相应关系。这不能算建议了。这是配置管理的基本要求了。但往往被违反。

參考材料

程序猿开发利器:源码管理的十条建议

英文原版 http://java.dzone.com/articles/10-commandments-good-source

中文翻译改写版  http://tech.it168.com/a2012/0307/1321/000001321198.shtml

时间: 2024-08-06 07:55:40

源码管理的新15条建议的相关文章

源代码管理的新15条建议

总结比较到位 http://blog.csdn.net/zhangmike/article/details/38509483  本文用菊子曰发布

源码管理十诫

英文原文:The 10 commandments of good source control management 若是还有能够毫无偏见地涉及各个编程语言.比源码管理软件更必要的工具.我倒是非常想见识一下.源码管理软件是我们工作的必备工具.是很多开发团队的血液.那为什么我们都会对它有所误解呢?为什么都非常难理解版本号控制系统的核心价值和基本原理呢? 我总结出 10 条惯例--假设你愿意也能够用"戒律"--意味着必须服从它并且从一開始非常难去理解. 它们与全部类型编程语言的版本号控制软

谈谈源码管理那点事儿(一)——源码管理十诫(转)

引言: 若是还有能够毫无偏见地涉及各个编程语言.比源码管理软件更必要的工具.我倒是非常想见识一下. 源码管理软件是我们工作的必备工具,是很多开发团队的血液. 那为什么我们都会对它有所误解呢?为什么都非常难理解版本号控制系统的核心价值和基本原理呢? 原文作者总结出10条惯例(假设你愿意也能够用"戒律")意味着必须服从它,并且一開始非常难理解. 它们与全部类型编程语言的版本号控制软件都有关联.在这里我选取了Subversion和.NET的几个样例,只是它们也广泛地适用于其它的一些技术. 英

cocos2d-x 源码分析 : EventDispatcher、EventListener、Event 源码分析 (新触摸机制,新的NotificationCenter机制)

源码版本来自3.x,转载请注明 cocos2d-x 源码分析总目录 http://blog.csdn.net/u011225840/article/details/31743129 1.继承结构 1.1 结构 不详吐槽太多,也不贴图了,贴图要审核好久好久好久好久. 从小到大,先来看下Event的结构. 1.Event--------EventTouch,EventCustom,EventMouse,EventKeyboard,EventFocus,EventAcceleration 其中,Eve

Linux软件包的管理--源码管理

任何管理工具都有自己最适用的场景,像软件包的管理,在CentOS系列中,有了RPM包管理器,但是它自动不能解决包的管理器,所以就出现了yum管理器,但是,他却不能符合我们实际要求(定制功能),所以就出现了源码管理.也许,有些时候源代码也不能满足我们的要求,我就可能要自己基于源码进行二次开发.这里,我们讲解源码管理. 一.源码安装步骤 源码编译的前提,得有像gcc,make等编译工具.一般情况下在"Development tools"里面都提供了这些编译工具. 源码安装步骤其实没有特定的

使用GIT进行源码管理 —— 在VisualStudio中使用GIT

GIT作为源码管理的方式现在是越来越流行了,在VisualStudio 2012中,就通过插件的现实对GIT进行了官方支持,并且这个插件在VS2013中已经转正.本文在这里简单的介绍一下如何在Visual Studio中使用GIT进行源码管理. PS: 由于篇幅所限,本文并没有对相关基础知识进行介绍,在读取本文前,假定你已经对GIT有一定的了解,并且对VisualStudio的团队管理器比较熟悉,后续有时间的话再进行相关知识的介绍. 将项目添加到GIT源码管理 将项目添加到GIT源码管理和通过T

配置源码管理工具(2)

源码管理是开发中最重要的事情之一,在vs.net里我们通常采用vss进行版本控制,在Eclipse里看帖子说用svn的比例很大,和IDE的集成性也很好. 1:服务器部署 下载地址是:http://subversion.apache.org/packages.html 下载的是CollabNet那个,需要注册,注册很简单. http://www.collab.net/downloads/subversion 安装基本就是按照说明走,没有遇到啥问题,说明书上好像要求是windows 2003 ser

优化SpriteKit游戏性能的15条建议

本文翻译自 15 tips to optimize your SpriteKit game SpriteKit是一个简单快速的二维游戏框架,由苹果自己的媒体库支持,可以直接访问GPU. 但是随着游戏的编写,可能会发现帧率开始下降,而且对于iPad Pro这样拥有120Hz刷新率显示屏的设备,需要努力将每一帧更新时间控制在8毫秒之内. 如果遇到帧率低.动画不稳定或类似的性能问题,可以通过一下15个优化方法来识别和解决问题,而且有少量代码示意. 使用纹理图集时要谨慎 纹理地图集将多个单独的资源放置在

jenkins持续集成源码管理选项为None,构建失败找不到git.exe解决办法

我的jenkins版本为Jenkins ver. 2.19.1 1.源码管理选项只有None的解决办法: 在插件管理中心,搜索对应的源码管理插件这里以git为例,搜索git plugin点击右下角的安装方式(在线安装需要连接VPN你懂的),如下图 重启后即可看到git按钮: 2.jenkins持续集成时,点击构建失败无法找到git.exe解决办法如下图: 控制台输出提示构建失败git.exe rev-parse --is-inside-work-tree # timeout=10:原因是没有找到