ARTS(06)

栏目: 编程工具 · 发布时间: 5年前

内容简介:在开发中,可都会依赖外部的工具或者库,但是过紧或者过松的版本依赖都会产生问题,因此在这里我们使用语义化版本管理可以避免这个问题。首先,使用语义化版本,可以很好的帮助我们软件的使用者,能够和用户达到很好的交流方式;再者使用语义化版本,可以帮我们约束我们软件开发的流程,如果控制我们软件的升级和兼容。在使用

1 Algorithm

2 Review

Semantic Versioning

在开发过程中,我们需要对软件进行版本设置,通常为 x.y.z语义化版本 表明版本号管理是具有语义信息的。其中 x 为主版本号 Majory 为次版本号 Minor , z 为补丁号 Patch
  • Major 版本号表明发生的API不兼容的问题;
  • Minor 版本号表明增加了一下向后兼容的操作;
  • Patch 版本号表明做了一些向后兼容的bug修复。

在开发中,可都会依赖外部的 工具 或者库,但是过紧或者过松的版本依赖都会产生问题,因此在这里我们使用语义化版本管理可以避免这个问题。

2.1 详细说明

  • 使用语义化版本的软件必须定义公共API,一旦API定义好,它就应该是准确和清晰明了的;
  • 版本使用 X.Y.Z 形式, X , Y , Z 都是整数,也不能以 0 开头,每次版本更新都是自增的;
  • 一旦某一个版本发布了,那么软件的内容将不能做任何改变,任何改变都要做新的版本发布;
  • Major 版本号为0,也就是 0.y.z 表明是刚刚开始开发,随时都会变化,这时候的公共API都视为不稳定的;
  • 版本 1.0.0 表明了公共的API;
  • 只有向后兼容的bug修复必须增加 patch 版本号;
  • 只有向后兼容的功能功能API发布必须增加 Minor 版本号;
  • 当向后不兼容的公共API发布后必须增加 Major 版本号;
  • 预发布版本可以在后面增加 [0-9A-Za-z-] 的标识符,预发布版本的优先级低于该版本号,通常表明该版本不保证满足兼容性要求,比如 1.0.0-alpha
  • 元数据可以添加到版本号后面,用 + 连接,并且保证元数据满足 [0-9A-Za-z-] 要求,比如 1.0.0-beta+exp.sha.5114f85 ;
  • 版本的优先级必须按照 Major , Minor , Patchpre-release 划分开来,其中 元数据 不作为版本号比较,通常优先级比较从左到右;

2.2 为什么这么做

首先,使用语义化版本,可以很好的帮助我们软件的使用者,能够和用户达到很好的交流方式;再者使用语义化版本,可以帮我们约束我们软件开发的流程,如果控制我们软件的升级和兼容。

2.3 补充说明

  • 任何时候以 0.1.0 作为软件开发的起点;
  • 如果软件在生产环境中使用,那么以 1.0.0 开始;
  • 如果软件每天都在快速开发,也就是公共 API 一直在改变,使用 major0 ;
  • 一旦更新 major 版本号,就需要考虑影响范围,需要在 cost/benifit 之间权衡;
  • 为你的公共API提供更多的文档注释;
  • 如果在更新 minor 版本号的时候,发现了不兼容现象,那么请立即增加 minor 版本号,然后恢复兼容性问题,并且通知用户改不兼容的版本号是有问题的;
  • 如果我更新了我的软件依赖,但是不影响公共API,那么不需要更新 major 版本号;
  • 如果想要废弃一些公共API,需要做两件事:(1)在公共文档中说明该公共API将会被废弃;(2)增加一个 minor 版本号,标明该API将会被废弃,以便在下一个 major 版本平滑过渡;

3 Tips

在使用 git 中的 reset 命令的时候,假设使用 --hard 参数后,版本将会回退到特定的 commit Id ,使用 git log 命令将不会显示该 commit id 后的所有提交,那么如果要查看之前的提交,可以使用 git reflog 命令查看最近的所有操作,找到先要恢复的 commit id ,使用 git checkout commitId , 将该提交切出来,注意目前的 HEAD 分支处于游离状态,需要使用 git checkout -b branch-name 将该游离的 HEAD 附属到 branch-name 分支上,待修复完毕后,从主分支上将其合并。

4 Share


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

精通Android游戏开发

精通Android游戏开发

[美] Vladimir Silva / 王恒、苏金国 等 / 人民邮电出版社 / 2011-2 / 45.00元

作为引领移动技术潮流的软件平台,Android发布了NDK以支持Java和C的混合开发,使PC游戏可以在Android平台上焕发更多魅力。 本书是为那些在Android游戏开发工作中寻求突破的人准备的。书中不仅通过Space Blaster和Asteroids这两个炫酷 的街机游戏深入介绍了如何从头构建纯Java游戏,更详细展示了如何将PC上的3D经典游戏Doom和Wolfenstein 3......一起来看看 《精通Android游戏开发》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具