脉冲云基础功能之版本控制

版本控制:

如果说什么是软件开发项目一定要使用的基础工具,那么版本控制系统应该算最重要的部分。不管是个人开发或是团队协作开发,都可以通过版本控制系统获得巨大的好处。

  没有版本控制系统的话,代码可能被别人或自己不小心覆盖或遗失、也不知道是谁因为什么原因改了这段代码、也没办法可以复原回前几天的修改。有了版本控制系统,开发人员只要将每次程式码的变更都纪录(Commit)起来,并且通过版本控制系统中进行更新。

  有了版本控制系统,我们可以浏览所有开发的历史纪录,掌握团队的开发进度,而且作任何修改都不再害怕,因为你可以轻易的复原回之前正常的版本。我们也可以通过分支和标签的功能来进行软件发行的不同版本,例如稳定版本、维护版本和开发中版本。

  如果你还没有使用的话,建议马上为你的软件开发项目建立版本控制。接下来是几点使用版本控制系统的建议:

  1.将所有东西都放进版本控制系统

  是的,所有项目开发过程中的产出物都放到版本控制系统之中,这包括了程序源代码、测试程序、文件、设定档、各种自动化脚本等等。除了新成员可以很容易拉出最新的版本马上开始工作之外,我们也希望在测试环境、正式环境中,也可以随时更新到我们所指定的版本,因此将所有变更的纪录保存起来是非常重要的。

  例如,数据库的变更也必须纳入版本控制。首先,在数据库中纪录它目前的版本编号。接着我们每次的修改都通过一个自动化脚本来执行,并将这个脚本放入版本控制之中,而不是手动用指令去修改纲要。这样的好处是团队中每个人都可以通过版本控制系统看到这个变更,并且升级他的数据库。测试和正式的服务器环境,也会通过这个脚本来自动进行升级。

  另外,以服务器应用来说,光是有源代码还是无法100%让软件工作起来,我们还需要知道服务器的配置设定,包括基础网络设定、操作系统设定、依赖的套件版本等等。因此最好这些配置设定也可以纳入版本管理系统之中。近年来云端技术的进步,已经可以将这些基础设施设定当作程序,无缝地让每个成员和所有环境都使用完全相同的设定,减少出错的可能性。

  2.频繁且适当大小的递交

  如果久久才递交一次修改到版本控制系统,那么你只是把版本控制系统当作一种备份工具而已,而没有享受到它真正的好处。频繁的递交可以帮助团队开发进度的透明化,减少多人开发时的代码冲突。当多人同时修改同一块代码时,解决代码冲突是很麻烦的事情。还有,我们也希望每一次的递交有适当的粒度大小,也就是每个提交的内容应该有高度相关性和独立性。例如是一个小功能或是一个小改进。如果你同时在做新功能A和修旧Bug,那么就应该分开两次递交。语法错误无法建构的程序也不应该提交从而造成团队困扰。

  有良好大小的代码提交习惯的好处除了版本的历史纪录更加清楚之外,我们可以非常轻易的做代码的复原或移植,假设上述的新功能A有问题,我们可以只复原A而不影响修好的Bug,或是只挑选修Bug的移植到不同分支去。

  3.良好的递交信息

  每一次的提交程序员都必须附上一段解释信息,说明修改的内容和原因。这除了可以帮助团队合作之外,更重要的是让软件有更好的维护性,以便将来备查,以下的场景相信开发者都不陌生:

  软件发现一个Bug,然后指派给你修复。

  你追代码追到一段看不懂的程序,也没有任何注释。

  通过版本控制系统,你找到了同事在一年前加了这行,递交的信息是BUG或简单的错误提示。

  同事还在公司,可是他也不记得当初是哪一个BUG了。或是他已经下班或离职了,反正找不到。

  你强行改了这行代码,发布出去。

  这个功能是修好了,但是发现另一个功能又出现问题。

  继续加班到凌晨,悲催ing....

  一个好的递交信息应该包括一行摘要信息,描述你为什么做这段变更,可能是新增、移除、修正某个功能,而不是描述新增或修改哪些档案,重点应放在备注为什么修改而不是这段是bug这么简单。因为修改了哪些档案和行数我们看版本差异就知道了,无须重复描述。如果你发现很难摘要,那可能表示你包含太多变更在同一次递交了,请试着拆开。

很多项目需求方还没有明白开发的定义,这里必须要跟大家说一点老生常谈的段子:“开发永远是个过程,而不是结果。”所以开发者一定要使用版本控制系统,Git或Mercurial是免费开源的版本系统系统、随处可用的网络、便宜的云端服务器,甚至有现成的第三方服务商Github和脉冲云等。

时间: 2024-09-30 06:26:21

脉冲云基础功能之版本控制的相关文章

微信小程序学习Course 9 云开发功能

微信小程序学习Course 9 云开发功能 微信小程序提供了一套免费的云开发功能API函数,虽然容量小,但足够我们个人用户使用以及学习了.下面简单介绍一下. 云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥. 目前提供三大基础能力支持: 云函数:在云端运行的代码,微信私有协议天然鉴权,开发者只需编写自身业务逻辑代码 数据库:一个既可在小程序前端操作,也能

KVM的基础功能(网络、内存、cpu、存储的配置)

KVM的基础功能(网络.内存.cpu.存储的配置) cpu的配置 1)查看cpu插槽数量 [[email protected] ~]# cat /proc/cpuinfo |grep "physical id" |wc -l 24 2)查看cpu核心数量 [[email protected] ~]# cat /proc/cpuinfo |grep "core id"| wc -l 24 3)查看cpu的模型 [[email protected] ~]# cat /p

jmeter 基础功能详解

jmeter 基础功能详解 thread group:包含一组线程,每个线程独立地执行测试计划. sampler:采样器,有多种不同的sample实现,用来发起各种请求,如http请求,jdbc请求,javaTest请求等等. logic controller:逻辑控制器有多种不同的实现,可以决定每个sample的执行顺序. listener:有多种不同的实现,主要用于统计测试接话运行中的数据并展示,如可以进行图形化方式展示响应时间. timer:定时器,有多种不同的实现,可用作每个请求见的停顿

【原创】Mindjet Manager思维导图软件云服务功能的使用方法

注:自己使用了mindjet manager来画思维导图已经有一段时间了,无疑mindjet manager的功能是很强大的,但是最近因为自己两台电脑都安装了mindjet manager,每次在不同电脑编辑同一份文档时,都要通过U盘或现在流行的网盘传输,才能在另一台电脑上继续进行编辑.最终寻求网络帮助,才发现mindjet manager早就有了云服务功能,欣喜之下,继续搜索,想要知道这云服务的具体使用方法,但最终得到的结果都令人可惜,基本上关于mindjet manager云服务功能使用的详

六、EnterpriseFrameWork框架基础功能之权限管理

回<[开源]EnterpriseFrameWork框架系列文章索引> 从本章开始进入框架的第二块内容“EnterpriseFrameWork框架的基础功能”,包括:权限管理.字典数据管理.报表管理和消息管理四块,这些功能又包括两个版本,Web版和Winform版也就是说有两套界面: 既然开始讲基础功能,顺便说一下EnterpriseFrameWork框架的适用范围,前面也有提到过就是此框架适合中小团队这是一方面,还一方面就是此框架适合行业应用系统软件的开发,你用它做一个“超市库存管理系统”.“

Ceph与OpenStack整合(仅为云主机提供云盘功能)

1. Ceph与OpenStack整合(仅为云主机提供云盘功能) 创建: linhaifeng,最新修改: 大约1分钟以前 ceph ceph osd pool create volumes 128 128 ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms,

微软云基础架构Hyper-scale Datacenter

每天醒来,可能很多人的习惯都是打开手机,看看微信,刷刷朋友圈,或者看看新闻,去咖啡店,打开电脑搜索一些关键字,观看视频,电视剧--可是你有没有想过你每一次键盘的敲击,每一次微信的语音的发送,数据会流向哪里,会怎么传播,我们怎么会快速的得到离我最近的餐厅信息?事实上,你所使用的所有这些服务,都运行在一个个的数据中心中,而数据中心正是信息世界中数据交换,流动,计算的心脏. 越来越多的大型IT公司将自己的数据中心和云端基础设施作为其重要的战略资产和核心竞争力的一部分,也有人可能看到过网上流出的goog

(转载)ASP.NET三大核心对象及基础功能解析

原文链接:http://tech.it168.com/a2011/1207/1284/000001284879_all.shtml 想当初在只使用WebForms框架并以服务端为中心的开发模式时,发现Asp.net好复杂.一大堆服务端控件,各有各的使用方法,有些控件的事件也很重要,必须在合适地时机去响应,还真有些复杂.后来逐渐发现这些复杂的根源其实就是服务器控件相关的抽象逻辑.随着Ajax越用越多,可能有些人也做过这些事情:[新建一个ashx文件,读取一些用户的输入数据,Form, QueryS

【产品体验】YoMail云盘功能体验

据调研数据显示,到目前为止邮件依然是商务环境中,同事间.客户间比较正式的网络沟通方式,也是和领导沟通的时候比较常用的方式.说到邮件,超大附件的传输,相信大家都经常遇到也是比较头痛的问题. 我之前在使用YoMail的时候经常遇到需要发送大附件困难的问题,每次需要发送超过20M的附件,第一个想法是使用QQ的超大附件发送.此时需要: 先打开浏览器 → 输入QQ邮箱网址 → 键入账号密码 → 登录后进入写信界面 → 上传超大附件 你可以看到,是非常繁琐的系列过程. 再有就是云盘了.大家会说,现在的云盘不