4

是否可以使用 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”

为了澄清,“标签字符串”是指您在例如中看到的字符串,git tag -l

我们在同一个 git 存储库中有多个项目,并且它们具有相似的版本号,因此像“v0.1.0”这样的标签是模棱两可的。

4

2 回答 2

4

有一个 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 步骤。

于 2017-01-29T10:13:49.287 回答
0

您可以根据需要使用自定义标签。这是我遵循的方法。

脚步

  1. 在文件中添加以下给定的内容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
    }
  }
}
  1. version.sbt在项目的根目录中创建一个文件并添加version in ThisBuild := "1.0.1-SNAPSHOT".
  2. 最后,您可以使用sbt-release或任何其他插件来发布/发布存储库中的工件。
于 2020-12-31T11:00:43.043 回答