如何获得 git.gitTagToVersionNumber 值?
How to get git.gitTagToVersionNumber value?
我正在使用 https://github.com/sbt/sbt-git and https://sbt-native-packager.readthedocs.io/en/stable/index.html 并想将 git.gitTagToVersionNumber
的值分配给我的 docker 容器。
我试过了:
git.useGitDescribe := true
Docker / dockerAlias := DockerAlias(None, Some("zerocoder"), (packageName in Docker).value, git.gitTagToVersionNumber.value)
不行,因为DockerAlias
最后一个参数的类型不匹配。
如何获取值git.gitTagToVersionNumber
?
我也试过:
git.useGitDescribe := 真
git.formattedShaVersion := git.gitTagToVersionNumber.value("tag")
Docker / dockerAlias := DockerAlias(None, Some("zerocoder"), (packageName in Docker).value, git.gitDescribedVersion.value)
但它没有提供所需的值。我想标记我的 docker 容器,例如:
v0.2.0-2-g8d5cd83
这是一个使用GitTagToVersionNumber
的例子:
git.useGitDescribe := true
git.gitDescribePatterns := Seq("v*.*")
git.gitTagToVersionNumber := { tag :String =>
val branchTag = if (git.gitCurrentBranch.value == "master") "" else "-" + git.gitCurrentBranch.value
val uncommit = if (git.gitUncommittedChanges.value) "-U" else ""
tag match {
case v if v.matches("v\d+.\d+") => Some(s"$v.0${branchTag}${uncommit}".drop(1))
case v if v.matches("v\d+.\d+-.*") => Some(s"${v.replaceFirst("-",".")}${branchTag}${uncommit}".drop(1))
case _ => None
}}
不要忘记您需要创建一个类似 v1.0 的标签(git tag v1.0
在您当前的分支上)才能看到上面的代码工作,因为它是从 git 读取的。如果您正在远程测试此功能,请不要忘记执行 git push --tags
.
以上示例提供:
- semver 兼容的自然版本控制,例如 1.0.0 有 minor/major 个部分。
- Git SHA 用于准确理解代码的作用。 (不包括实际标记适用于当前 SHA 的地方)
- v1.0 的主要部分来自您需要创建的手动创建标签,最后一部分(例如 1.0.3-xxx 中的 .3)来自自动计算您来自标签 v1 的提交次数.0。因此,与标记每个次要版本相比,它更不容易受到人为错误的影响。
- 如果存储库有修改,则添加
-U
,因此代码不一定可重新创建。
- 如果您不在主分支上,它会添加分支名称。
这是一个 complete working example,但可能您还没有在 build.sbt` 的项目部分启用 GitVersioning
插件。
我正在使用 https://github.com/sbt/sbt-git and https://sbt-native-packager.readthedocs.io/en/stable/index.html 并想将 git.gitTagToVersionNumber
的值分配给我的 docker 容器。
我试过了:
git.useGitDescribe := true
Docker / dockerAlias := DockerAlias(None, Some("zerocoder"), (packageName in Docker).value, git.gitTagToVersionNumber.value)
不行,因为DockerAlias
最后一个参数的类型不匹配。
如何获取值git.gitTagToVersionNumber
?
我也试过:
git.useGitDescribe := 真
git.formattedShaVersion := git.gitTagToVersionNumber.value("tag")
Docker / dockerAlias := DockerAlias(None, Some("zerocoder"), (packageName in Docker).value, git.gitDescribedVersion.value)
但它没有提供所需的值。我想标记我的 docker 容器,例如:
v0.2.0-2-g8d5cd83
这是一个使用GitTagToVersionNumber
的例子:
git.useGitDescribe := true
git.gitDescribePatterns := Seq("v*.*")
git.gitTagToVersionNumber := { tag :String =>
val branchTag = if (git.gitCurrentBranch.value == "master") "" else "-" + git.gitCurrentBranch.value
val uncommit = if (git.gitUncommittedChanges.value) "-U" else ""
tag match {
case v if v.matches("v\d+.\d+") => Some(s"$v.0${branchTag}${uncommit}".drop(1))
case v if v.matches("v\d+.\d+-.*") => Some(s"${v.replaceFirst("-",".")}${branchTag}${uncommit}".drop(1))
case _ => None
}}
不要忘记您需要创建一个类似 v1.0 的标签(git tag v1.0
在您当前的分支上)才能看到上面的代码工作,因为它是从 git 读取的。如果您正在远程测试此功能,请不要忘记执行 git push --tags
.
以上示例提供:
- semver 兼容的自然版本控制,例如 1.0.0 有 minor/major 个部分。
- Git SHA 用于准确理解代码的作用。 (不包括实际标记适用于当前 SHA 的地方)
- v1.0 的主要部分来自您需要创建的手动创建标签,最后一部分(例如 1.0.3-xxx 中的 .3)来自自动计算您来自标签 v1 的提交次数.0。因此,与标记每个次要版本相比,它更不容易受到人为错误的影响。
- 如果存储库有修改,则添加
-U
,因此代码不一定可重新创建。 - 如果您不在主分支上,它会添加分支名称。
这是一个 complete working example,但可能您还没有在 build.sbt` 的项目部分启用 GitVersioning
插件。