使用 sbt-release 指定自定义 git 标签
Specify a custom git tag with sbt-release
是否可以使用 sbt-release 为 git 标签名称指定一个 git 方案?
可以指定标签提交信息和评论。根据自述文件:
releaseTagComment := s"Releasing ${(version in ThisBuild).value}",
releaseCommitMessage := s"Setting version to ${(version in ThisBuild).value}",
但我一直无法找到一种方法来更改实际标签文本的默认设置,即设置为 s"v${releaseVersion}"。
我想在标签字符串中指定项目名称,例如"myproject-v0.1.1"
澄清一下,"tag string" 是指您在 git tag -l
中看到的字符串
我们在同一个 git 存储库中有多个项目,并且它们具有相似的版本号,因此像 "v0.1.0" 这样的标签是不明确的。
有一个 sbt-release 配置值 releaseTagName
,您可以修改它来自定义发布标签的生成方式。
这对我有用:
lazy val root = (project in file(".")).
settings(
.... other settings ....
releaseTagName := s"version-${if (releaseUseGlobalVersion.value) (version in ThisBuild).value else version.value}",
....
)
如果一切都失败了,您还可以自定义发布步骤,并编写您自己的 tagRelease 步骤。
您可以根据需要使用自定义标签。这是我遵循的方法。
步骤
- 在
build.sbt
文件中添加以下内容。在这里,如果分支是 master
那么我使用 semantic versioning
就像: 1.0.1
但是如果分支名称不是 master
那么我使用自定义标签(branch-name + git-commitid + timestamp
).
import scala.sys.process.Process
lazy val root = (project in file(".")).enablePlugins(JavaAppPackaging)
name := "your-project-name"
scalaVersion := "2.12.11"
val branch = Process("git rev-parse --abbrev-ref HEAD").lineStream.head
version := {
branch match {
case "master" => (version in ThisBuild).value
case _ => {
val commit = Process("git rev-parse HEAD").lineStream.head
val time = Process("git log -1 --format=%ct").lineStream.head
branch +"-"+ commit +"-"+ time
}
}
}
- 在项目的根目录中创建一个
version.sbt
文件并添加 version in ThisBuild := "1.0.1-SNAPSHOT"
.
- 最后,您可以使用 sbt-release 或任何其他插件来 release/publish 存储库中的工件。
是否可以使用 sbt-release 为 git 标签名称指定一个 git 方案?
可以指定标签提交信息和评论。根据自述文件:
releaseTagComment := s"Releasing ${(version in ThisBuild).value}",
releaseCommitMessage := s"Setting version to ${(version in ThisBuild).value}",
但我一直无法找到一种方法来更改实际标签文本的默认设置,即设置为 s"v${releaseVersion}"。
我想在标签字符串中指定项目名称,例如"myproject-v0.1.1"
澄清一下,"tag string" 是指您在 git tag -l
我们在同一个 git 存储库中有多个项目,并且它们具有相似的版本号,因此像 "v0.1.0" 这样的标签是不明确的。
有一个 sbt-release 配置值 releaseTagName
,您可以修改它来自定义发布标签的生成方式。
这对我有用:
lazy val root = (project in file(".")).
settings(
.... other settings ....
releaseTagName := s"version-${if (releaseUseGlobalVersion.value) (version in ThisBuild).value else version.value}",
....
)
如果一切都失败了,您还可以自定义发布步骤,并编写您自己的 tagRelease 步骤。
您可以根据需要使用自定义标签。这是我遵循的方法。
步骤
- 在
build.sbt
文件中添加以下内容。在这里,如果分支是master
那么我使用semantic versioning
就像:1.0.1
但是如果分支名称不是master
那么我使用自定义标签(branch-name + git-commitid + timestamp
).
import scala.sys.process.Process
lazy val root = (project in file(".")).enablePlugins(JavaAppPackaging)
name := "your-project-name"
scalaVersion := "2.12.11"
val branch = Process("git rev-parse --abbrev-ref HEAD").lineStream.head
version := {
branch match {
case "master" => (version in ThisBuild).value
case _ => {
val commit = Process("git rev-parse HEAD").lineStream.head
val time = Process("git log -1 --format=%ct").lineStream.head
branch +"-"+ commit +"-"+ time
}
}
}
- 在项目的根目录中创建一个
version.sbt
文件并添加version in ThisBuild := "1.0.1-SNAPSHOT"
. - 最后,您可以使用 sbt-release 或任何其他插件来 release/publish 存储库中的工件。