git - 使用 sbt-git 构建包导致 "SNAPSHOT-SNAPSHOT"版本限定符

标签 git sbt version

我们将 SBT 与 sbt-git 结合使用,从 Git 修订版中获取构建版本。具体来说,我们使用 git describe 的输出作为版本号,并在当前修订未标记时附加“SNAPSHOT”限定符:

val versionRegex = "v([0-9]+.[0-9]+.[0-9]+)-?(.*)?".r

git.useGitDescribe := true
git.baseVersion := "0.0.0"
git.gitTagToVersionNumber := {
  case versionRegex(v, "") => Some(v)
  case versionRegex(v, "SNAPSHOT") => Some(s"$v-SNAPSHOT")
  case versionRegex(v, s) => Some(s"$v-$s-SNAPSHOT")
  case _ => None
}

但是,这有时会导致限定符重复,即像“0.0.0-12345678-SNAPSHOT-SNAPSHOT”这样的版本号。

我找不到明显的原因。从 gitTagToVersionNumber 中删除“-SNAPSHOT”可以解决问题,但在其他情况下会完全删除限定符。

最佳答案

如果在构建期间 Git 工作副本中有未提交的更改,sbt-git 将附加一个额外的限定符。

默认情况下,此限定符设置为“SNAPSHOT”。可以通过 uncommittedSignifier 设置更改它,例如:

git.uncommittedSignifier := Some("DIRTY")

关于git - 使用 sbt-git 构建包导致 "SNAPSHOT-SNAPSHOT"版本限定符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39589049/

相关文章:

git - GitHub 上 Pull Requests 的最佳实践

git - 将 Windows git 与 Git Kraken 结合使用

scala - 从发布中排除 sbt 多项目中的项目 (sbt-gpg)

version - Mantis - 添加版本字段

从应用商店安装新版本后的 iOS 应用行为

git - Git 软件(例如 Gitbox、Github、SourceTree)可以使用远程仓库而不是本地仓库吗?

git - 向 Mercurial 添加 Git 子存储库

scala - 在 Delite 中编译我的第一个 DSL

scala - SBT Scala 汇编插件

flash - 检查 Flash 版本的脚本并不是真正检查版本