me icon indicating copy to clipboard operation
me copied to clipboard

关于软件版本的说明

Open nonocast opened this issue 2 years ago • 0 comments

不是软件才有版本

红楼梦

《红楼梦》是中国最好的古典小说。以其去今未远,所以现存版本之复杂,也远超其他中国古典小说。大致分为两个系统:刻本(或称程本、程高本)和抄本(或称脂本)。程本按出版先后称为程甲本和程乙本,俱为一百二十回。程乙本是程甲本的修改本,文字较成熟。抄本名目繁多,少者只存两回(郑振铎藏本),多者存七十八回(庚辰本)。各个抄本也有时间先后的顺序。一般认为最可信的、也是最早的的三个抄本,按时间先后分别称为甲戌本、己卯本、庚辰本,俱题为《脂砚斋重评石头记》,正文中夹有署名为脂砚斋的评语。

同理,中华人民共和国宪法,美国宪法,新华字典都有完整的版本记录。

版本是一种称谓,用于描述同一事物的相互之间有差异的各种形式状态内容。 「版」在这里原意是印刷用的模板,「本」的意思是书籍。因此,版本最初用于描述书籍的不同形式、状态或内容。第一次出版,稱為初版。如果印刷內容未改,而之後再付印的話,則不稱為再版,而稱為「初版第○刷」或「第1版第○刷」,○為重印次數,例如「第1版第2刷」。內容有更動,可稱為「改版」或「新版」。這是為了讓讀者可以明確知道書籍內容有無實質變化。不過,不誠實的出版業者或作者可能故意宣稱書籍「出新版」,即便內容全無改變,以增加銷售量。 现今版本可用于描述书籍、电影法律观点软件等事物。一个事物可能因各种原因而有不同版本,如作者修订发布环境改变传播过程影响等。不同版本的差异形形色色,如某歌手所發行的同張專輯可能同时发行CD錄音帶版本;某部法律为适应社会新变化,於经过修订後发布並生效新版本。

软件版本

针对单一软件版本的策略:

  • 采用semver,x.y.z后包括pre-release和build信息, stage包括: alpha (a), beta (b), release candidate (rc), release, post-release fixes
  • 当开发内容完成后,应选择一个revision(commit) tag为2.1.0-a.1,后续不断测试修复bug,版本轨迹应该是2.1.0-a.2, 2.1.0-a.3, 2.1.0-b1, 2.1.0-b2, 2.1.0-rc1,最终是2.1.0,2.1.0没有后缀才是一个对外的release版本,然后发布后修复bug,此时为2.1.1,最后z表示post-release fixes带来的update
  • 如果带上build metadata,则是2.1.0-a.1+20220609
  • 一个git仓库对应一个version track

软件集策略:

  • 假设一个产品包含3个module,每个module应有各自独立的版本规则
    • module A: module-a-1.3.0+20220609
    • module B: module-b-2.7.3+20220421
    • module C: module-c-4.3.1+20211207
  • 产品可以挑选对应的release版本形成一个配置集,即产品prod-1.3.0对应(module-a-1.3.0+20220609, module-b-2.7.3+20220421, module-c-4.3.1+20211207)
  • prod也应同样遵循semver

Product Market Name:

  • 以Windows为例,版本号1, 2, 3, 4.0, 4.0.1998, 4.0.2222, 4.90.3000分别对应的Marketing Name为1, 2, 3, 95, 98, 98SE, ME
  • Market Name是prod-x.y.z的一个别名,不要混淆prod version和market name

总结:

  • 版本应采用semver
  • 软件和软件集应采用分而治之的结构,对应各自的版本
  • 每个版本都应有stage

参考阅读

nonocast avatar Jun 09 '22 08:06 nonocast