From 437a704abe6181a9fe43249ef925c072161d8bef Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Sat, 17 Feb 2018 17:58:32 +0100 Subject: [PATCH] Append +0 to first dirty commit after tag Fixes #52 --- src/main/scala/sbtdynver/DynVerPlugin.scala | 7 ++++++- src/test/scala/sbtdynver/DynVerSpec.scala | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/scala/sbtdynver/DynVerPlugin.scala b/src/main/scala/sbtdynver/DynVerPlugin.scala index 99d87bb..44860ef 100644 --- a/src/main/scala/sbtdynver/DynVerPlugin.scala +++ b/src/main/scala/sbtdynver/DynVerPlugin.scala @@ -69,7 +69,12 @@ object GitDirtySuffix extends (String => GitDirtySuffix) { } final case class GitDescribeOutput(ref: GitRef, commitSuffix: GitCommitSuffix, dirtySuffix: GitDirtySuffix) { - def version: String = ref.dropV.value + commitSuffix.mkString("+", "-", "") + dirtySuffix.value + def version: String = { + if(isDirtyAfterTag) s"${ref.dropV.value}+0-${dirtySuffix.dropPlus.value}" + else ref.dropV.value + commitSuffix.mkString("+", "-", "") + dirtySuffix.value + } + + def isDirtyAfterTag = commitSuffix.distance == 0 && ref.isTag && isDirty() def isSnapshot(): Boolean = isDirty() || hasNoTags() || commitSuffix.distance > 0 def isVersionStable(): Boolean = !isDirty() diff --git a/src/test/scala/sbtdynver/DynVerSpec.scala b/src/test/scala/sbtdynver/DynVerSpec.scala index 99d48ea..cc43974 100644 --- a/src/test/scala/sbtdynver/DynVerSpec.scala +++ b/src/test/scala/sbtdynver/DynVerSpec.scala @@ -10,7 +10,7 @@ object VersionSpec extends Properties("VersionSpec") { property("on commit, w/o local changes") = onCommit().version() ?= "1234abcd" property("on commit with local changes") = onCommitDirty().version() ?= "1234abcd+20160917-0000" property("on tag v1.0.0, w/o local changes") = onTag().version() ?= "1.0.0" - property("on tag v1.0.0 with local changes") = onTagDirty().version() ?= "1.0.0+20160917-0000" + property("on tag v1.0.0 with local changes") = onTagDirty().version() ?= "1.0.0+0-20160917-0000" property("on tag v1.0.0 and 1 commit, w/o local changes") = onTagAndCommit().version() ?= "1.0.0+1-1234abcd" property("on tag v1.0.0 and 1 commit with local changes") = onTagAndCommitDirty().version() ?= "1.0.0+1-1234abcd+20160917-0000" }