summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZachary Hueras <zhueras@chitika.com>2015-09-21 11:36:36 -0400
committerZachary Hueras <zhueras@chitika.com>2015-09-21 11:36:36 -0400
commit2fa68051ef773784c70ea94c365114a2472ff238 (patch)
tree5da03eb9bee0a516b8a4b40ce94ad6283981a88f /src
parenta70c1baf79d94f0e992673e886995a7bd48795a2 (diff)
Improve semantic versioning from git between tags
In the scenario we that we have selected a commit that is between two tags, we should base the version on the most recent tag we can see in the revision history, but we should not treat this as the tag version. `git describe --tags --abbrev=0` finds the most recent tag visible in the revision history from the current HEAD. Return this as the version string and undefined as the tag to trigger ref counting.
Diffstat (limited to 'src')
-rw-r--r--src/rebar_git_resource.erl8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/rebar_git_resource.erl b/src/rebar_git_resource.erl
index 0efdd1b..97e951e 100644
--- a/src/rebar_git_resource.erl
+++ b/src/rebar_git_resource.erl
@@ -198,6 +198,12 @@ parse_tags(Dir) ->
{match,[Tag, Vsn]} ->
{Tag, Vsn};
nomatch ->
- {undefined, "0.0.0"}
+ case rebar_utils:sh("git describe --tags --abbrev=0",
+ [{use_stdout, false}, return_on_error, {cd, Dir}]) of
+ {error, _} ->
+ {undefined, "0.0.0"};
+ {ok, LatestVsn} ->
+ {undefined, string:strip(LatestVsn, both, $\n)}
+ end
end
end.