使用sbt-release指定自定义git标记

时间:2017-01-28 00:10:40

标签: scala sbt 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”

通过“标记字符串”澄清,我指的是您在git tag -l

中看到的字符串

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

步骤

  1. converted_price 文件中添加以下给定的内容。在这里,如果分支是 build.sbt 那么我使用 master 像:semantic versioning 但是如果分支名称不是 1.0.1 那么我使用自定义标签({{ 1}}).
master
  1. 在项目的根目录中创建一个 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 } } }
  2. 最后,您可以使用 sbt-release 或任何其他插件来发布/发布存储库中的工件。