diff --git a/source/dub/internal/git.d b/source/dub/internal/git.d index 989ea6c..d7e169f 100644 --- a/source/dub/internal/git.d +++ b/source/dub/internal/git.d @@ -103,7 +103,8 @@ if (tag.startsWith("v") && isValidVersion(tag[1 .. $])) { if (num == 0) return tag[1 .. $]; const i = tag.indexOf('+'); - auto r = format("%s-commit.%s.%s", tag[1 .. (i < 0) ? $ : i], num, commit); + auto r = format("%s%scommit.%s.%s", tag[1 .. (i < 0) ? $ : i], + parts.length > 3 ? "." : "-", num, commit); if (i > 0) r ~= tag[i .. $]; return r; } @@ -122,7 +123,11 @@ // tag v1.0.0-beta.1 assert(determineVersionFromGitDescribe("v1.0.0-beta.1-0-deadbeef") == "1.0.0-beta.1"); // 2 commits after tag v1.0.0-beta.1 - assert(determineVersionFromGitDescribe("v1.0.0-beta.1-2-deadbeef") == "1.0.0-beta.1-commit.2.deadbeef"); + assert(determineVersionFromGitDescribe("v1.0.0-beta.1-2-deadbeef") == "1.0.0-beta.1.commit.2.deadbeef"); + // tag v1.0.0-beta.2+2.0.0 + assert(determineVersionFromGitDescribe("v1.0.0-beta.2+2.0.0-0-deadbeef") == "1.0.0-beta.2+2.0.0"); + // 3 commits after tag v1.0.0-beta.2+2.0.0 + assert(determineVersionFromGitDescribe("v1.0.0-beta.2+2.0.0-3-deadbeef") == "1.0.0-beta.2.commit.3.deadbeef+2.0.0"); // invalid tags assert(determineVersionFromGitDescribe("1.0.0-0-deadbeef") is null);