summaryrefslogtreecommitdiff
path: root/src/rebar_git_resource.erl
diff options
context:
space:
mode:
authorFred Hebert <mononcqc@ferd.ca>2015-05-03 16:06:26 -0400
committerFred Hebert <mononcqc@ferd.ca>2015-05-03 16:06:26 -0400
commit9b770b896718aee800e43ac045582cd8abb266da (patch)
tree38b2ebf4f65f44274628a6bc4c10ef43d0bc5976 /src/rebar_git_resource.erl
parentb4b6638ba9f7fb41f776c18eb08d31c3f804f00a (diff)
parentd4c7dea7351435eaafe56a23845d8772e4bac0ac (diff)
Merge pull request #381 from tsloughter/upgrade_branch
on upgrade of git branch check against remote
Diffstat (limited to 'src/rebar_git_resource.erl')
-rw-r--r--src/rebar_git_resource.erl11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/rebar_git_resource.erl b/src/rebar_git_resource.erl
index 3b77da2..07c9b4d 100644
--- a/src/rebar_git_resource.erl
+++ b/src/rebar_git_resource.erl
@@ -31,11 +31,14 @@ needs_update(Dir, {git, Url, {tag, Tag}}) ->
?DEBUG("Comparing git tag ~s with ~s", [Tag, Current1]),
not ((Current1 =:= Tag) andalso compare_url(Dir, Url));
needs_update(Dir, {git, Url, {branch, Branch}}) ->
- {ok, Current} = rebar_utils:sh(?FMT("git symbolic-ref -q --short HEAD", []),
+ %% Fetch remote so we can check if the branch has changed
+ {ok, _} = rebar_utils:sh(?FMT("git fetch origin ~s", [Branch]),
+ [{cd, Dir}]),
+ %% Check for new commits to origin/Branch
+ {ok, Current} = rebar_utils:sh(?FMT("git log HEAD..origin/~s --oneline", [Branch]),
[{cd, Dir}]),
- Current1 = string:strip(string:strip(Current, both, $\n), both, $\r),
- ?DEBUG("Comparing git branch ~s with ~s", [Branch, Current1]),
- not ((Current1 =:= Branch) andalso compare_url(Dir, Url));
+ ?DEBUG("Checking git branch ~s for updates", [Branch]),
+ not ((Current =:= []) andalso compare_url(Dir, Url));
needs_update(Dir, {git, Url, "master"}) ->
needs_update(Dir, {git, Url, {branch, "master"}});
needs_update(Dir, {git, Url, Ref}) ->