2009-01-20 111 views
6

我有一个版本控制系统(例如Subversion),现在我想建立一个构建过程。现在我必须创建一个版本号并将其插入到系统中。但是版本号从哪里来,并进入?假设我想使用这个常见的<专业>。 < minor>。 < bugfix/revision> scheme。我应该将编号传递给构建脚本吗?或者我应该通过像增加主要,增加小,增加修正等论据?或者,您是否会建议使用构建脚本检测到的编号创建分支?版本号从哪里来?

我可以想象,主要和次要版本号必须手动放在某个地方。版本号可以自动增加。但我仍然不知道我会在哪里放置主要和次要的数字。

在我的情况下,我有一些我想压缩的php文件,但是在我必须在php文件中插入一些版本号之前。


我已经编辑这篇文章,试图让我的要求更加清晰:

我不使用Subversion,这只是一个例子。我不想讨论版本号方案。

想象一下,我想创建版本3.5.0或3.5.1。我会将此版本号传递给构建脚本吗?该脚本是否会使用此编号在存储库中创建分支,还是希望某人已创建此分支?手动?或者构建脚本会查找分支的名称(例如'3.5.1)并将其用于更多的事情?版本号是从我的脑中传出还是自动创建的(我猜想它的主要/次要编号来自我的小脑袋并且创建了版本号)?或者你会将该号码放入可能被插入到存储库中的文件中?

我想如果会使用发布管理工具,我会在那里插入版本号。但我还没有用过。

回答

5

对于颠覆操作,可以采用全局修订版本号并将其作为“构建”号使用,或者更好的是不要依赖它,并使用标记和/或分支来管理版本。全球修订的主要问题就是,回购是全球性的。即使部分回购没有变化,它也会增加。

彻底解除版本与回购协议的版本是恕我直言,更好。你有标签,使用它们。

+0

如果DVCS使用HASH作为查询ID。对于SVN使用** svnversion -c **。 – gavenkoa 2011-08-18 20:10:04

1

svn或任何其他版本控制系统的修订与您的产品版本号(甚至是内部版本号)不同。

有许多方法可以执行版本号。通常在Subversion中你可以为一个版本创建一个分支(或标签,它们本质上是一样的),如果这是一个发行版本,你为这个创建一个标签,例如svn://my-repo/releases/1.0.0

您可以将参数传递到构建脚本中以获取代码并将其用作构建编号,或者使用构建脚本使用的目录,然后将svn切换到您想要构建的分支,脚本可以使用svn info来确定它正在构建的版本。

0
x.y.i.j 

x - 主要版本,y - 次要版本,i - 版本号,j - 修订数

Major version增量上的重大变化(新的架构,新的用户界面等)

Minor version在较小的变化(性能改进,主要bug修复等)上增加,

Build number递增everyt ime你公开发布。

Revision number每次将更改提交到项目源代码树时都会递增。

我更希望在0作为修订版本号的AssemblyInfo.cs和发布包(foo-1.1.7.110-source.zip)的名称

2

与以往所有关于使用约定地点的实数分支机构和标签。另外,分支名称和标签名称可以合并到具有一些聪明脚本的构建过程中。

我希望增加的唯一技巧是你应该将SVN修订版隐藏到每个版本中。有时很容易回到某个特定的地方,而不是知道标签或分支。 99%的标签/分支是够好的,但是这个版本对于增量/内部/连续/测试版本来说是很好的。

2

所有分支应该手动创建。构建脚本应该在标签和/或分支上运行,首先检查它(或者可能正在更新它)。作为构建过程的一部分,在构建的确切快照上创建标记是一个好主意。

您通常会建立编号和版本。内部版本号可以自动增加,并作为版本的一部分进行版本控制(除了基于标签的版本,其中版本号必须停留在版本库之外 - 这是避免基于标签的版本的另一个原因)。

版本通常存储在您每次发布周期手动更新一次的文件中。它被检查进入正确的分支,然后独自离开。例如,主线在其文件中的版本=“3”,发行版分支上的第一个版本将具有版本=“3.5”,并且如果需要补丁版本,则将其从分支分支中分支出来并签入版本= “3.5.1”