标签: versioning

在C#代码中重用.h文件中的define语句

我有C++项目(VS2005),其中包含#define指令中版本号的头文件.现在我需要在双C#项目中包含完全相同的数字.最好的方法是什么?

我正在考虑将此文件作为资源包含在内,然后在运行时使用正则表达式解析它以恢复版本号,但也许有更好的方法,您怎么看?

我不能在.h文件之外移动版本,也建立系统取决于它,C#项目是应该适应的.

c# c++ versioning header c-preprocessor

6
推荐指数
2
解决办法
1万
查看次数

如何编辑动态业务对象/数据?

我们正在开发与业务相关的大型应用程序.您可以找到类似于某些ERP,CRM等的这些应用程序.

现在我们要求我们需要对用户输入的所有数据进行版本控制.

例如:在某个时间点,用户需要查看特定采购订单的更改历史记录是什么?

我正在寻找一个非常通用的版本控制处理程序(非严格),如果某些业务数据属性发生变化,它甚至可以处理.这个单一的版本控制处理程序应该能够处理几乎任何类型的业务对象/数据.

什么是最好的编程/数据库设计来处理这些.

任何想法或意见?

PS:我已经添加了一些编程标签,因为我希望程序员能够接受这个主题并提出他们的想法.

编辑:我正在寻找一种非常优化的方式,有点类似于存储差异存在而不是以序列化/转储方式存储对象.

.net php versioning business-logic java-ee

6
推荐指数
1
解决办法
770
查看次数

用于测试不同客户端和服务器版本的最佳Git策略

我希望能够为Java客户端/服务器运行集成测试(使用嵌入式jetty).此外,我希望能够在集成测试期间混合和匹配不同的服务器和客户端源代码版本.

我想知道什么是最好的git或maven版本策略来完成这个:

  1. 对客户端和服务器使用相同的git存储库,很难签出各种服务器版本的代码并根据各种客户端版本的代码进行测试.

  2. 使用单独的git存储库(第一个存储库与客户端src和集成测试,第二个存储库与服务器src) - 它还需要检出两个存储库以运行集成测试,并假设它们之间的相对路径.

  3. 仅针对maven版本服务器WAR测试客户端src代码可能导致开发人员针对与签出的服务器源代码不匹配的服务器WAR运行测试的诚实错误.

versioning git testing maven

6
推荐指数
1
解决办法
660
查看次数

在MSBuild中生成版本号

我们有一个带有WiX安装程序和MSBuild构建脚本的C#解决方案.我们正在从SVN迁移到Git.

作为我们版本号的第四部分,我们希望每个构建都能提升.到目前为止,我们已经使用了SVN版本号.MSBuild脚本定义了一个ProductVersion属性,其中包含SVN修订版号作为构建版本的四个数字的最后一个.但是,我们不能再使用它,因为我们将不再使用SVN.

我一直试图找到SVN版本号的替代品,但我无法弄清楚要使用什么.

  • Jenkins提供了我可以使用的内部版本号,但我不想将我们的版本控制系统与Jenkins联系起来.

  • Jenkins还提供了时间戳,但它不符合Microsoft的版本号限制:它是字母数字且有点长,而版本中的第4个数字应该是0到65535之间的整数.

  • 我们可以将AssemblyVersion设置为1.0.*并让.NET填写其余部分.这适用于我们的程序集,但我找不到将其注入WiX的方法.我们可以在构建之后从其中一个程序<MSBuild>集中获取它,但我们的MSBuild脚本使用该任务立即构建整个解决方案,因此我们陷入了需要运行的Catch-22,<MSBuild>因此它可以编译一个程序集我们可以用来获取生成的版本号,但是为了运行<MSBuild>,我们首先需要一个已编译的程序集,以便我们可以从中获取生成的版本号.

  • 我可以在MSBuild文件中添加一个单独的Target来编译某些东西(任何东西)并从中获取版本号,然后对该<MSBuild>任务进行实际调用.但那只是感觉不对.

同样,我并不关心数字是什么,只要它随着每次构建而增加.基于时间戳的东西会很好.有任何想法吗?

.net versioning msbuild wix

6
推荐指数
1
解决办法
9904
查看次数

您如何知道两个不同版本之间接口的差异?

我正在研究一些php库.我想跟踪类库接口的变化.

  • 是的,我正在使用GIT.但差异产生的信息比我需要的多.
  • 我试图用phpDocumentor比较两个版本.

    phpdoc项目:parse -d文件夹

生成具有项目接口结构的xml文件.我可以将此xml文件与另一个文件进行比较.但这些包含的信息比我想要的多.像行号,文件哈希等.

所以,我想比较两个提交,分支甚至分支,并找出它们的接口的差异.

比较示例:http://pastebin.com/1H61dJBT

了解何时更改主要版本也很重要.

进行不兼容的API更改时的MAJOR版本...

http://semver.org/spec/v2.0.0.html

php versioning diff interface

6
推荐指数
1
解决办法
453
查看次数

为什么Gemfile语义版本控制运算符(〜>)会产生一个数字不一致的结果?

gemspec语义版本控制运算符〜(又名twiddle-wakka,又名悲观运算符)允许对gem版本进行约束,但允许进行一些升级.

我经常看到它可以被解读为:

 "~> 3.1"   => "Any version 3.x, but at least 3.1"
 "~> 3.1.1" => "Any version 3.1.x, but at least 3.1.1"
Run Code Online (Sandbox Code Playgroud)

但是有一个数字,这个规则就会崩溃:

 "~> 3"     => "Any version x, but at least 3"   *NOT TRUE!*
 "~> 3"     => "Any version 3.x"                 *True. But why?*
Run Code Online (Sandbox Code Playgroud)

如果我想要"任何版本3.x",我可以使用"〜> 3.0",这是一致的.就目前而言,这种操作在一个数字上的变化是不一致的,没有记录.

此外,如果我想说"任何高于或等于3的版本"(所以3.x,4.x等......)我很想使用"> ="运算符,我们被告知这是邪恶的.

这种行为有原因吗?

编辑:

我将这个给大卫找到rubygems中的罪魁祸首文件.有一个"功能"无声地将"3"扩展为"3.0"(版本中的第148行.rb:"单个数字版本会自动扩展为零以产生合理的结果.")

我必须说我不同意结果是明智的,因为它打破了预期的顺序,并阻止能够用该运算符说"任何版本x,但至少3".因此,我们被迫进入> = guides.rubygems.org 警告我们不要使用.无论如何.也许这篇文章将作为我一直在寻找的文档......

ruby versioning rubygems gemfile

6
推荐指数
1
解决办法
571
查看次数

当只在GitHub上更改README时,是否必须更新项目版本?

我在GitHub上编辑我的一个开源项目,我想替换链接(指向一个演示)README.md.

每次我对README文件或文档进行一些小的更改(没有任何实际的代码更改)时,是否必须更新库版本?

社区接受的做法是什么?

如果这很重要,我正在使用Bower来分发我的软件包和SemVer作为版本控制系统.

versioning version github semantic-versioning bower

6
推荐指数
1
解决办法
1182
查看次数

构建用于版本控制的Web API堆栈

所以我花了几个小时来浏览Web API版本控制的所有真正奇妙的建议.我最喜欢的一些,对于那些和我一样有趣的人,没有特别的顺序:

API版本控制的最佳实践?

ASP.NET MVC应用程序的REST API版本控制

http://www.troyhunt.com/2014/02/your-api-versioning-is-wrong-which-is.html

http://www.pluralsight.com/courses/web-api-design

http://www.pluralsight.com/courses/implementing-restful-aspdotnet-web-api

因此,所有这些建议都非常有助于设计API本质上的"前端".我们可以对API调用进行版本控制......现在,我正在努力解决这个问题.

对于拥有多个产品(这是一个新产品)的公司来说,这是一个大量数据驱动的应用程序.一些需要长期支持API调用的大客户,一些希望获得最新版本的小客户.我们可以使用类似于里程碑/长期支持版本的API来管理.大.

但在实践中,这将变得非常混乱,非常快.我们一直在努力将我们自己的网站,beta内部/外部API,存储库层以及甚至是要启动的SDK分层.我们将每个版本分成不同的分支,但它是SAAS - 我们托管数据库.因此,我们不仅能够对API调用进行版本控制 - 而且还包括其下的所有内容.业务逻辑,存储库和数据库.我们甚至没有开始进行单元/集成测试.

因此,尝试并且可能失败只在这里提出一个问题.

是否有一个合适的模式来构建一个分层的,数据驱动的.NET应用程序来应对多个版本?

具体来说,数据库将如何更改以及如何构建通用堆栈以对其进行全部版本化.我的一些想法包括:

  • 更新堆栈的旧源控制分支并部署这些分支
  • 将所有内容保存在同一个项目中,但始终使用文件夹/命名空间
  • 进一步拆分项目 - 所以API解决方案有许多"Controller"项目,逻辑/ repo层的概念类似

我们有相当数量的开发人员,无论我写了多少ace文档,实际上它只会在某些东西不起作用时被读取.因此,理想情况下,开发人员必须尽可能明显地明白这一点.

c# versioning asp.net database-versioning asp.net-web-api

6
推荐指数
1
解决办法
1401
查看次数

doxygen中的"新版API在ABC版本"页面

例如,有一个Doxygen选项用于指定API何时使用\since标记出现

///
/// Does foo
///
/// \since 1.5
///
void foo();
Run Code Online (Sandbox Code Playgroud)

它会出现在foo()文档中.

我正在寻找一种自动创建页面的方法,该页面包含1.5中出现的所有API - 即列出所有标记的API \since 1.5或可能的其他标记(如果可用).

编辑:我尝试使用\ingroup并创建一个包含所有新API的组页面,它可以工作.但它将描述移到此页面,例如将一个新方法从类定义移动到页面"1.2.3中的新建",这不是我想要的.

versioning doxygen

6
推荐指数
1
解决办法
237
查看次数

如何使用不同的数据库模式提供多个版本的API?

在Kevin Goldsmith 2015年关于Spotify微服务(15:25-17:43)的讨论中,他提到当他们创建一个新版本的API时,他们只需创建一个新服务器,并保持旧服务器运行旧版本只要还有客户呼叫它(在这种情况下,嵌入了Spotify的智能灯).

我很困惑他们将如何能够维护和提供旧版本的潜在年份,当时在这段时间内肯定会有数据库架构更改?

我可以看到一些可能的解决方案,但它们似乎都不合理:

  1. 在所有版本中使用相同的数据库,只需添加新表和新的可空字段.永远不要删除字段,也不要重命名字段,也不要将字段设置为不可为空,也不要删除表,也不要重命名表.
  2. 每个版本使用不同的数据库,将每个版本的数据分开.
  3. 每个版本使用不同的数据库,将每个版本的数据分开,但写一种方法来迁移并将请求从一个版本传递到另一个版本,以便每个版本都接收带有该版本的有效参数的请求.

解决方案1听起来会引起太多的代码味道,遗留代码无处不在(在我看来,凯文似乎暗示他们当然不这样做).

对于其他服务或报告,解决方案2听起来像是一场噩梦.如果您想要的实体信息在您要求的实体的另一个版本的数据库中,该怎么办?

解决方案3听起来更像是一场噩梦,因为您必须编写代码来将您的版本请求迁移到您上面和下面的版本.这意味着您不能在创建新版本时保留现有(当前正在生产的版本)版本,因为您需要添加迁移以向前和向后移动请求,以便所有版本都接收到正确的请求参数.

希望我在这里错过了一些简单的东西,并且有一个神奇的解决方案可以让这个问题变得更容易,但我真的看不出它们是如何实现这一目标的?

谢谢!

database versioning microservices

6
推荐指数
1
解决办法
842
查看次数