标签: versioning

什么是Swift相当于Objective-C的"#ifdef __IPHONE_11_0"?

我想使用Xcode 9将iOS 11代码添加到我的项目中,同时保留使用仅支持iOS 10的Xcode 8编译项目的选项.

在Objective-C中,我可以通过使用预处理程序指令来检查是否__IPHONE_11_0已定义.如果我使用早于iOS 11的Base SDK进行编译,这将隐藏代码.像这样:

#ifdef __IPHONE_11_0
    if (@available(iOS 11.0, *)) {
        self.navigationController.navigationBar.prefersLargeTitles = YES;
    }
#endif
Run Code Online (Sandbox Code Playgroud)

有没有办法在Swift中做到这一点?

if #available(iOS 11.0, *) 不起作用,因为这是一个运行时检查.

versioning macros xcode swift

19
推荐指数
2
解决办法
7752
查看次数

版本的rails应用程序的最佳方式?

什么是版本的rails应用程序的最佳方法?我们希望开始进入更加结构化的测试周期,并且每个构建版本的设置版本都是其中的一部分.我们使用subversion但我想避免使用版本的修订号.有一种简单的方法可以自动执行此操作吗?或者我应该在应用程序助手中定义app_version方法?

(我们使用subversion进行源代码控制)

versioning version-control ruby-on-rails

18
推荐指数
2
解决办法
4586
查看次数

从`git describe`派生应用程序构建版本 - 如何获得相对简单的字符串?

UPDATE

我看到这个问题已经变得有点流行了.现在已经是我公认的Git使用年限了,从那以后我学到了很多东西.,拜托之前,不管你会从这个Q&A得知事情对你的Git冒险阅读最后一段.


我想编写应用程序构建版本,该版本是从我所在的GIT分支名称(构建时)和自分支分歧后的提交数量自动派生的.我相信这对我的GIT存储库中的任何提交都是唯一的吗?分支名称是唯一的,并且提交沿着分支相互链接?如果我标记提交,我也可以使用该标记作为前缀.

在某种程度上git describe做我想要的,但它不包括我所在的分支名称,它包括缩写提交SHA-1哈希,我认为我不需要它,因为它不会添加任何东西到字符串的熵并且可能是多余的(我可能在这里错了,所以请纠正我).

我有什么选择?我在这里想的是正确的方向吗?当我有更多关于软件开发的重要事项时,我只是厌倦了为版本添加数字.

顺便说一下,我从来没有用肮脏的工作树建造.即我在构建公共发布之前总是将更改提交到存储库.

我现在知道 Git分支只是提交引用,因此,许多分支(和标记!)可能指向单个提交.因此,问题"这个提交属于哪个分支/谎言" 对Git 来说并不完全有效.Git 跟踪你正在使用的"当前"分支 - 它已经为你检查过的分支 - 但同时任何数量的其他分支可能指向同一个提交,并且可以说没有任何一个分支可以被选择为"main"除非您想要表示当前已签出到磁盘的那个.请阅读本页面上以下答案进行详细说明.

versioning git auto-versioning

18
推荐指数
4
解决办法
1万
查看次数

git branch -set-upstream-to vs git remote add origin之间的区别

我发现知道git branch --set-upstream-tovs git remote add origin或者偶数之间的区别有点令人困惑git remote add upstream

基本上我创建了git init --bare一个在网络上共享的裸存储库,以便其他开发人员也可以推送到它,这样我们就可以在本地对我们的项目进行版本控制,但不确定我应该在上面三个(或者如果还有其他)中运行哪个命令跟踪中央回购,例如我们将我们的变化从所有项目推送到中央裸仓库并从中拉取/取出.

有人可以请教这个吗?

versioning git version-control

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

我想在我的网站上显示git版本

我想在我的网站上显示git版本号.

我发现它是一个提交哈希,这不适合非技术用户参考.

我创建了这个类来显示这个脚本当前git本地的版本'number'.

php versioning git github

18
推荐指数
4
解决办法
2万
查看次数

发布创建和发布之间的 Github Action 不同

由于Github Release s 实际上是一个Git Tag s,我想package.json在有新的 Release (和标签)时使用Github Action自动升级我的版本。

我知道我需要触发 a job on: release,但是根据Github Actions 文档,我不知道我是否需要触发 when createdpublished, both or all?

Github 说:

注意:发布release不会触发该事件draft

我创建了两个管道:一个on: release, type: created和一个on: release, type: published

然后我创建了一个draft版本,然后我发布了它。

只有published管道触发,而且是在我发布版本的时候。

versioning git-tag npm package.json github-actions

18
推荐指数
2
解决办法
2416
查看次数

版本号是1.13> 1.2?

我从.NET的角度知道,版本为1.13的程序集被认为是比版本1.2更新的版本,因为版本中的每个数字都是单独计算的.然而,从数值的角度来看,1.13 <1.2.

问题归结为为客户发布更新时的可读性.从.0到.9它们都是一样的,但是在.10你必须区分.那么,你是否将点数发布的数量限制为9,然后在达到.9时增加主要版本?

请不要认为最终用户了解典型的开发版本编号方案.

更新:

不要把它想象成十进制数.(.)是不同字段之间的分隔符.每个字段的含义(例如):

 MajorRelease.MinorRelease.BuildNumber
Run Code Online (Sandbox Code Playgroud)

绝对!当我查看版本号时,我看到了它.但这不是你的普通乔读取文字"1.13"的方式.我想作为程序员,很容易将我们的理解投射到我们的用户身上.这就是为什么我对数字混淆经验的回应感兴趣.这可能不是一个真正的问题,或者它可能只是被忽略了.

更新2:响应"提供文档"或"向用户解释"类型的解决方案:它们不起作用!:)如果你必须向用户解释版本号,你已经使它变得比它需要的更复杂.虽然一项技术的主要受众可能是许多公司的开发人员,但软件的实际采购和管理由没有开发或技术背景的秘书和文职人员处理.如果他们的经理问他们"是否有可用的新版本1.9"并且他们看到"1.11"他们可能不会将其注册为新版本.

.net versioning assemblies

17
推荐指数
5
解决办法
2532
查看次数

在应用程序中显示构建时间戳

我想显示应用程序在about框中构建的时间戳.这将允许我跟踪应用程序的不同版本.如何在Java中检索此信息?

java versioning build

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

如何处理包更改的Java序列化对象?

我有一个Java类存储在HttpSession对象中,该对象在集群环境中的服务器之间进行序列化和传输.出于此解释的目的,我们将此类称为"Person".

在改进代码的过程中,这个类从"com.acme.Person"转移到"com.acme.entity.Person".在内部,类保持完全相同(相同的字段,相同的方法,相同的一切).

问题是我们有两组服务器同时运行旧代码和新代码.具有旧代码的服务器具有序列化的HttpSession对象,并且当新代码反序列化它时,它会抛出ClassNotFoundException,因为它找不到对com.acme.Person的旧引用.此时,处理这个很容易,因为我们可以使用新包重新创建对象.然后问题变成新服务器中的HttpSession将使用对com.acme.entity.Person的新引用来序列化对象,并且当在运行旧代码的服务器中对其进行反序列化时,将抛出另一个异常.此时,我们再也无法处理此异常.

对于这类案件,最好的策略是什么?有没有办法告诉新服务器通过引用旧包序列化对象并将旧包的引用反序列化为新包?所有服务器运行新代码后,我们将如何过渡到使用新包并忘记旧包?

java versioning serialization

17
推荐指数
1
解决办法
6974
查看次数

如何处理版本化的SOAP Web服务的代码?

背景:

  • 我们的网络服务是公司内部的,但有很多不同的系统使用它们
  • 我们将努力尽可能地弃用/删除旧版本的api

有很多关于Web服务版本化的信息,我们的决定是使用以下方法来版本化我们的Web服务:

  • 保留URL中的版本(我知道有些人反对这个,但主要是关于REST服务)
  • 保留命名空间中的版本

但是,现在我们正在决定如何实际实现这一点,而在这里我们还没有找到关于最佳实践的大量信息.我们使用(Java):

  • 用于定义Web服务(和Web服务API)的注释
  • 用XML注释注释的POJO bean,用于定义内容
  • 用于转换/转换到业务层和Web服务pojo的转换器类
  • 弹簧

因此,为了保持Web服务的旧版本,我们需要保留旧版本的代码.为此,我们基本上看了两种不同的方法:

1)对于每个新版本,请制作相关代码的完整新副本

这种方法看起来像这样:

com.company.webservice.v3. -all of the web service classes, POJO’s and converters go here
com.company.webservice.v4. -all of the web service classes, POJO’s and converters go here
Run Code Online (Sandbox Code Playgroud)

所以,这里我们有重复的代码.我们的想法简而言之:

  • 代码重复.将是几个具有相同代码的类.也许在Eclipse中令人困惑.
  • 完全隔离,易于确定具体版本的构成
  • 最大限度地降低影响以前版本服务功能的风险

2)使用spring仅制作受更改影响的每个类的副本

这种方法意味着使用Spring IoC并让所有版本的Web服务尽可能使用相同的代码.只有当我们进行影响行为/ api的更改时,我们才会创建这些类的新版本.例如:

com.company.webservice.beans.MyXMLAnnotatedPOJOv3.java
com.company.webservice.beans.MyXMLAnnotatedPOJOv4.java
com.company.webservice.translators.MyXTranslatorv1.java
com.company.webservice.translators.MyXTranslatorv2.java
Run Code Online (Sandbox Code Playgroud)
  • 可能很难清楚地看到什么构成了特定版本的Web服务.在维护代码时,误操作可能更容易影响以前版本的Web服务
  • 没有代码重复.仅将更改实现为新类

这两种方法都不是最佳方法,但我们没有找到关于此的更多信息.所以,我的问题是: 你会使用哪两种方法?或者你会采取完全不同的方法?

java versioning service version web

17
推荐指数
1
解决办法
3852
查看次数