Questions tagged «versioning»

软件版本控制是将唯一的版本名称或唯一的版本号分配给计算机软件的唯一状态的过程。在给定的版本号类别(主要,次要)中,这些编号通常按升序分配,并与软件中的新开发内容相对应。

9
Java项目的构建和版本编号(ant,cvs,hudson)
Java项目中系统内部版本号和版本号管理的当前最佳实践是什么?特别: 如何在分布式开发环境中系统地管理内部版本号 如何在源代码中维护版本号/可用于运行时应用程序 如何与源存储库正确集成 如何更自动地管理版本号和存储库标签 如何与持续构建基础架构集成 有很多可用的工具,而ant(我们正在使用的构建系统)的任务将维护一个构建号,但是目前尚不清楚如何使用CVS,svn或类似的工具与多个并发开发人员一起管理该数目。 。 [编辑] 下面出现了几个很好的有用的部分或特定答案,因此我将总结其中的一些。在我看来,这并不是真正的“最佳实践”,而是一些相互重叠的想法。在下面,找到我的摘要以及随之而来的人们可能会尝试回答的一些问题。[stackoverflow的新功能...如果我做错了,请提供评论。] 如果您使用的是SVN,则特定的结帐版本会随之增加。内部编号可以利用此编号来创建唯一的内部编号,以标识特定的结帐/修订。[出于遗留原因,我们使用的CVS并不能提供如此深入的了解...使用标签进行手动干预会使您有所作为。] 如果将maven用作构建系统,则支持从SCM生成版本号,以及用于自动生成发行版的发行版模块。[出于多种原因,我们不能使用Maven,但这可以帮助那些可以使用Maven的人。[感谢marcelo-morales ]] 如果您使用ant作为构建系统,则以下任务描述可以帮助生成捕获构建信息的Java .properties文件,然后可以通过多种方式将其折叠到构建中。[感谢marty-lamb,我们将这个想法扩展到包括来自哈德逊的信息]。 Ant和Maven(以及Hudson和Cruise Control)提供了将内部版本号获取到.properties文件或.txt / .html文件的简便方法。这个“安全”足以防止它被有意或无意地篡改吗?在构建时将其编译为“版本”类更好吗? 断言:应在诸如hudson的连续集成系统中定义/制定内部版本号。[感谢marcelo-morales ]我们采纳了这个建议,但是它确实解决了发布工程问题:发布是如何发生的?版本中是否有多个内部版本号?不同发行版的内部版本号之间是否存在有意义的关系? 问题:内部编号背后的目标是什么?是否用于质量检查?怎么样?是开发人员主要使用它在开发过程中消除多个版本之间的歧义,还是让质量检查人员确定最终用户获得了什么版本?如果目标是可复制性,那么从理论上讲,这就是发行版本号应提供的内容-为什么不提供?(请在下面的回答中作为一部分回答,这将有助于阐明您所做的/建议的选择...) 问题:手动构建中是否存在内部版本号?这是否有问题,以至每个人都应该使用CI解决方案? 问题:是否应将内部版本号签入SCM?如果目标是可靠,明确地确定特定的构建,则如何应对可能会崩溃/重新启动等的各种连续或手动构建系统。 问题:内部版本号短而甜美(即,单调递增的整数),以便它易于粘贴到文件名中进行存档,易于在通信中引用等……还是应该长而又充满用户名,日期戳,机器名称等? 问题:请提供有关内部编号分配如何适合较大的自动发布过程的详细信息。是的,Maven爱好者,我们知道这已经完成了,但是并不是我们所有人都已经喝了苦艾酒。 我真的很想将其充实为一个完整的答案,至少对于我们的cvs / ant / hudson设置的具体示例而言,这样,有人可以根据此问题制定出完整的策略。我将标记为“答案”的任何人都可以为此特定情况提供详尽的描述(包括cvs标记方案,相关的CI配置项以及将内部版本号折叠到版本中的发布过程,以便以编程方式进行如果您要询问/回答其他特定配置(例如svn / maven / cruise控件),我将在此处链接到该问题。--JA [编辑2009年10月23日]我接受了投票最多的答案,因为我认为这是一个合理的解决方案,而其他几个答案也都包含了好主意。如果有人想破解使用marty-lamb合成其中的某些内容,我将考虑接受另一种。我对marty-lamb的唯一担忧是,它不会生成可靠的序列化内部版本号-它依赖于构建者系统上的本地时钟来提供明确的内部版本号,这并不好。 [编辑7月10日] 现在,我们包括一个如下所示的类。这样可以将版本号编译到最终的可执行文件中。版本信息的不同形式会在日志数据,长期归档的输出产品中发出,并用于将我们(有时是几年后)对输出产品的分析追溯到特定的版本。 public final class AppVersion { // SVN should fill this out with …

17
您如何版本化数据库架构?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 10个月前关闭。 改善这个问题 您如何准备SQL增量?您是将每个更改架构的SQL手动保存到增量文件夹中,还是有某种自动差异化过程? 我对用于对数据库架构和源代码进行版本控制的约定感兴趣。也许是一个预先提交的钩子,可以与架构进行区分? 另外,除了DbDeploy之外,还有哪些差异差异选项? 编辑:看到答案,我想澄清一下,我熟悉使用增量运行数据库迁移的标准方案。我的问题是最好自己自动创建增量。 同样,版本控制适用于PHP和MySQL(如果有所帮助)。(请没有Ruby解决方案)。
128 sql  mysql  schema  versioning 

16
用于修订的数据库设计?
我们在项目中需要将实体的所有修订(更改历史记录)存储在数据库中。目前,我们有2个为此设计的提案: 例如,对于“雇员”实体 设计1: -- Holds Employee Entity "Employees (EmployeeId, FirstName, LastName, DepartmentId, .., ..)" -- Holds the Employee Revisions in Xml. The RevisionXML will contain -- all data of that particular EmployeeId "EmployeeHistories (EmployeeId, DateModified, RevisionXML)" 设计2: -- Holds Employee Entity "Employees (EmployeeId, FirstName, LastName, DepartmentId, .., ..)" -- In …


9
如何使用Spring管理REST API版本管理?
我一直在搜索如何使用Spring 3.2.x管理REST API版本,但没有找到易于维护的任何东西。我将首先解释我所遇到的问题,然后是一个解决方案...但是我确实想知道我是否在这里重新发明轮子。 我想基于Accept标头来管理版本,例如,如果请求具有Accept标头application/vnd.company.app-1.1+json,我希望spring MVC将其转发到处理该版本的方法。而且由于并非同一版本中的API中的所有方法都发生了变化,所以我不想转到每个控制器并为在版本之间未发生变化的处理程序进行任何更改。我也不想逻辑确定在控制器本身中使用哪个版本(使用服务定位器),因为Spring已经发现了要调用的方法。 因此,采用1.0版至1.8版的API,其中在1.0版中引入了处理程序,并在v1.7版中对其进行了修改,我想通过以下方式进行处理。假设代码在控制器内部,并且有一些代码能够从标头中提取版本。(以下在Spring中无效) @RequestMapping(...) @VersionRange(1.0,1.6) @ResponseBody public Object method1() { // so something return object; } @RequestMapping(...) //same Request mapping annotation @VersionRange(1.7) @ResponseBody public Object method2() { // so something return object; } 在Spring中这是不可能的,因为这两种方法具有相同的RequestMapping注释,并且Spring无法加载。这个想法是VersionRange注释可以定义一个打开或关闭的版本范围。第一种方法从1.0到1.6版本有效,而第二种方法从1.7版开始(包括最新版本1.8)有效。我知道,如果有人决定通过99.99版,这种方法就会失败,但是我可以接受。 现在,由于没有认真修改spring的工作原理就不可能实现上述目的,因此我想到了修改处理程序与请求匹配的方式,特别是编写自己的ProducesRequestCondition,并在其中拥有版本范围。例如 码: @RequestMapping(..., produces = "application/vnd.company.app-[1.0-1.6]+json) @ResponseBody public Object method1() { // so …

3
跳过作曲家的PHP要求
我们正在使用PHPCI和作曲家。运行PHPCI的服务器在PHP 5.3上。 对于一个项目,我们使用作曲家添加了Facebook PHP SDK。它需要PHP 5.4。Composer由PHPCI触发并执行。但是由于CI服务器刚获得PHP 5.3编写器而失败,并显示以下错误消息: facebook/php-sdk-v4 4.0.9 requires php >=5.4.0 -> no matching package found. 当然,这会让我在PHPCI中的构建失败。 是否可以跳过此要求?也许通过向composer.json添加选项?还是composer.phar调用的参数?

14
如何设置现有.exe,.dll的版本信息?
在构建过程中,我需要为所有已编译的二进制文件设置版本信息。有些二进制文件已经具有版本信息(在编译时添加),而有些则没有。 我希望能够应用以下信息: 公司名 版权声明 产品名称 产品描述 文件版本 产品版本 所有这些属性均由构建脚本指定,并且必须在编译后应用。这些是使用C ++ Builder 2007编译的标准二进制文件(不是程序集)。 我怎样才能做到这一点?

12
如何通过我们的CI平台(哈德森)自动递增C#程序集版本?
我本人和我的小组在增加程序集版本号时都感到非常恐惧,我们经常以1.0.0.0版本发布程序集。显然,这会引起很多头痛。 通过CI平台,我们的做法越来越好,我真的很想将其设置为自动递增assemblyinfo.cs文件中的值,以便随着该程序集中的代码更改自动更新程序集的版本。 我之前曾设置过(在找到Hudson之前)通过msbuild命令行或命令行增加值的方式(不记得了),但是使用Hudson,它将更新SVN存储库并触发ANOTHER构建。当哈德森每小时轮询SVN时,这将导致缓慢的无限循环。 让Hudson增加版本号是个坏主意吗?什么是替代方法呢? 理想情况下,我的解决方案标准是: 在构建assemblyinfo.cs之前增加内部版本号 仅增加已更改的部件中的内部版本号。这可能是不可能的,因为Hudson每次执行构建都会清除项目文件夹 将更改后的assemblyinfo.cs提交到代码存储库中(当前为VisualSVN) 不会导致Hudson在下次扫描更改时触发新的构建 在脑海中解决这个问题,我可以很容易地通过批处理文件/命令提出解决方案,但是我的所有想法都会导致Hudson在下次扫描时触发新的构建。我并不是在寻找某人为我做任何事情,只是为我指明正确的方向,也许是让哈德森忽略某些SVN提交的技术,等等。 到目前为止,我发现的所有内容只是一篇说明如何自动增加版本号的文章,没有考虑可能会陷入无限循环的CI平台。

11
如何版本REST URI
REST URI版本的最佳方法是什么?当前,我们在URI本身中有一个版本号,即。 http://example.com/users/v4/1234/ 对于此表示形式的版本4。 版本是否属于queryString?即。 http://example.com/users/1234?version=4 还是以另一种方式最好地完成了版本控制?

7
自动更新版本号
我希望每个构建版本都可以增加应用程序的version属性,但是我不确定如何在Visual Studio(2005/2008)中启用此功能。我试图将AssemblyVersion指定为1.0。*,但它并不能完全满足我的需求。 我也在使用设置文件,并且在较早的尝试中,当程序集版本更改时,由于应用程序在另一个目录中查找设置文件,因此我的设置被重置为默认设置。 我希望能够以1.1.38的形式显示版本号,因此当用户发现问题时,我可以记录他们正在使用的版本,并告诉他们如果具有旧版本则进行升级。 对于版本控制的简短解释也将不胜感激。版本号和修订号何时增加?

4
如何管理版本化API的基础代码库?
我一直在阅读有关ReST API的版本控制策略,其中似乎没有一个要解决的问题是如何管理基础代码库。 假设我们正在对API进行一系列重大更改-例如,更改我们的Customer资源,以使其返回单独的forename和surname字段,而不是单个name字段。(对于此示例,我将使用URL版本控制解决方案,因为它很容易理解所涉及的概念,但是该问题同样适用于内容协商或自定义HTTP标头) 现在http://api.mycompany.com/v1/customers/{id},我们在拥有一个端点,在拥有另一个不兼容的端点http://api.mycompany.com/v2/customers/{id}。我们仍在向v1 API发布错误修正和安全更新,但是新功能开发现在都集中在v2上。我们如何编写,测试和部署更改到我们的API服务器?我可以看到至少两个解决方案: 对v1代码库使用源代码控制分支/标记。v1和v2是独立开发和部署的,同时有必要使用修订控制合并来将相同的错误修正应用于两个版本-类似于在开发主要的新版本时仍支持先前版本时如何管理本机应用程序的代码库。 使代码库本身了解API版本,因此最终得到一个包含v1客户表示形式和v2客户表示形式的代码库。将版本控制视为解决方案体系结构的一部分,而不是部署问题-可能使用名称空间和路由的某种组合来确保请求由正确的版本处理。 分支模型的明显优势是删除旧的API版本很简单-只是停止部署适当的分支/标签-但是如果您运行的是多个版本,则最终可能会遇到复杂的分支结构和部署管道。“统一代码库”模型避免了此问题,但是(我认为吗?)将使得在不再需要不再使用的资源和端点时,很难从代码库中删除它们。我知道这可能是主观的,因为不可能有一个简单的正确答案,但我很好奇要了解维护多个版本的复杂API的组织如何解决此问题。

9
如何在Excel文件和SQL模式文件上执行更好的文档版本控制
我负责几个Excel文件和SQL模式文件。我应该如何对这些文件执行更好的文档版本控制? 我需要知道这些文件中修改过的部分(不同部分),并保留所有版本以供参考。目前,我在文件名上附加了时间戳,但是我发现它似乎效率很低。 有没有一种方法或良好的做法来进行更好的文档版本控制? 顺便说一句,编辑人员通过电子邮件将文件发送给我。


21
用于版本号解析的正则表达式
我有以下形式的版本号: version.release.modification 其中版本,发行和修改是一组数字或“ *”通配符。此外,任何这些数字(和任何前面的。)可能会丢失。 因此,以下内容有效并解析为: 1.23.456 = version 1, release 23, modification 456 1.23 = version 1, release 23, any modification 1.23.* = version 1, release 23, any modification 1.* = version 1, any release, any modification 1 = version 1, any release, any modification * = any version, any …
84 regex  versioning 

3
将标签向前一次提交
我的存储库只有一个分支(master)。我是我的回购的唯一贡献者。 我最近tag在本地添加了一个,并将其推送到GitHub。在完成了我的最后一次提交之后,但是现在我意识到我应该再进行一次更改/提交。 所以我有: commit 124 commit 125 commit 126 <-- tag v1.0 commit 127 并且我想将v1.0标签移动到下一个提交,即127本地和GitHub中。 我怎样才能做到这一点?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.