有没有关于如何为你在业余时间开发的仅供娱乐但将被某些人使用的软件进行版本控制的指南或标准最佳实践?我认为有必要对这种软件进行版本控制,以便您知道正在谈论的版本(例如用于修复错误、支持等)。
但是我应该从哪里开始进行版本控制呢?0.0.0?还是0.0?然后我该如何增加这些数字?主要版本.次要更改?每次提交到版本控制系统都应该是另一个版本吗?还是只针对在生产环境中使用的版本?
有没有关于如何为你在业余时间开发的仅供娱乐但将被某些人使用的软件进行版本控制的指南或标准最佳实践?我认为有必要对这种软件进行版本控制,以便您知道正在谈论的版本(例如用于修复错误、支持等)。
但是我应该从哪里开始进行版本控制呢?0.0.0?还是0.0?然后我该如何增加这些数字?主要版本.次要更改?每次提交到版本控制系统都应该是另一个版本吗?还是只针对在生产环境中使用的版本?
除非您知道第一个版本“发布”存在某种不完整的情况,否则应从版本1开始。
至于如何递增版本,这取决于您自己,但可以使用主要、次要、生成编号作为指南。
没有必要将提交到源代码控制的每个版本都视为另一个版本-否则您很快就会有一个非常大的版本号。只有在向外部世界发布新版本时才需要以某种方式递增版本号。
因此,如果您进行了重大更改,例如从WinForms更改为WPF,请从版本1.0.0.0移动到版本2.0.0.0。如果您进行了较小的更改,则从1.0.0.0移动到1.1.0.0(例如添加对png文件的支持)。如果您进行了较小的更改,则从1.0.0.0移动到1.0.1.0(例如修复了一些错误)。
如果您真的想要详细了解,可以使用最后一个数字作为生成号码,每次检入/提交时都会递增(但我认为这做得太过头了)。
我会使用 x.y.z
类型的版本控制方式。
x
- 主要版本号
y
- 次要版本号
z
- 构建编号
我基本上遵循以下模式:
从0.1.0版本开始
准备好后,我会在源代码库中分支代码,标记为0.1.0并创建0.1.0分支,主干/头变成0.2.0-snapshot或类似的版本。
我仅将新功能添加到主干,但将修复内容嵌入到分支中,并在一段时间后从分支发布0.1.1,0.1.2等版本。
当产品被认为具有完整功能且没有重大缺陷时,我宣布版本1.0.0。
从那时起-每个人都可以决定何时增加主要版本号......
我在我的应用程序中使用以下规则:
x.y.z
其中:
示例:
我们使用a.b.c.d来表示版本号,其中:
另一个使用 A.B.C
方法的例子是 Eclipse Bundle Versioning。Eclipse bundles有四个部分:
在Eclipse中,版本号由四个(4)段组成:分别命名为
major.minor.service.qualifier
的3个整数和一个字符串。每个部分都捕获不同的意图:
- 主要部分表示API的破坏
- 次要部分表示“外部可见”的更改
- 服务部分表示bug修复和开发流的更改
- 限定符部分表示特定的构建
还有date versioning scheme,例如:YYYY.MM
,YY.MM
,YYYYMMDD
这种方案非常信息丰富,因为一眼就能给人留下发布日期的印象。但我更喜欢x.y.z方案,因为我总是想知道产品在其生命周期中的确切点位(Major.minor.release)。
正如Mahesh所说: 我会使用x.y.z这种版本号命名方式。
x - 主要版本 y - 次要版本 z - 构建编号
你可能想要添加日期时间,也许可以代替z。
当你有另一个发行版时,你会增加次要版本。 主要版本通常会保持为0或1,只有在真正进行重大更改(通常是在软件不再向后兼容以前的版本或更改整个框架时)时才会更改它。
您知道您可以随时查看别人在做什么。开源软件往往允许访问他们的代码库。例如,您可以将您的SVN浏览器指向http://svn.doctrine-project.org 并查看一个真实项目使用的版本控制系统。
版本号、标签,一应俱全。