summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Allen <michael@michaelallen.io>2015-05-07 13:39:04 +0100
committerMichael Allen <michael@michaelallen.io>2015-05-07 13:39:04 +0100
commit68fa32350114852188161c7ab96e5e493aaa6e12 (patch)
treeebed381af0fef12e9b0f67c7a6a798e1ddf0b622
parent9bb6cd2e1057e820aba445ec2206df8de69bc961 (diff)
downloadgit-sonar-68fa32350114852188161c7ab96e5e493aaa6e12.tar.gz
git-sonar-68fa32350114852188161c7ab96e5e493aaa6e12.zip
cleanly support repos with no master to track
Diffstat (limited to '')
-rwxr-xr-xgit-base.sh16
-rwxr-xr-xtest-commits.sh41
2 files changed, 53 insertions, 4 deletions
diff --git a/git-base.sh b/git-base.sh
index f854ae3..950422d 100755
--- a/git-base.sh
+++ b/git-base.sh
@@ -167,11 +167,15 @@ remote_behind_of_master() {
tracked_remote="origin/master"
if [[ -n "$remote_branch" && "$remote_branch" != "$tracked_remote" ]]; then
set --
- set -- $(git rev-list --left-right --count origin/master...${remote_branch})
+ set -- $(git rev-list --left-right --count ${tracked_remote}...${remote_branch} 2>/dev/null)
behind=$1
ahead=$2
set --
- echo $behind
+ if [[ -n "$behind" ]]; then
+ echo $behind
+ else
+ echo "0"
+ fi
else
echo "0"
fi
@@ -182,11 +186,15 @@ remote_ahead_of_master() {
tracked_remote="origin/master"
if [[ -n "$remote_branch" && "$remote_branch" != "$tracked_remote" ]]; then
set --
- set -- $(git rev-list --left-right --count origin/master...${remote_branch})
+ set -- $(git rev-list --left-right --count ${tracked_remote}...${remote_branch} 2>/dev/null)
behind=$1
ahead=$2
set --
- echo $ahead
+ if [[ -n "$ahead" ]]; then
+ echo $ahead
+ else
+ echo "0"
+ fi
else
echo "0"
fi
diff --git a/test-commits.sh b/test-commits.sh
index e1800aa..340365d 100755
--- a/test-commits.sh
+++ b/test-commits.sh
@@ -259,4 +259,45 @@ test_dont_remote_if_remote_is_master() {
rm_tmp
}
+test_quiet_if_no_remote_master() {
+ cd_to_tmp "remote"
+ git init --quiet
+ touch README
+ git add .
+ git checkout -b foo --quiet
+ git commit -m "initial commit" --quiet
+ remoteLocation="$(pwd)"
+
+ cd_to_tmp "new"
+ git init --quiet
+ git remote add origin $remoteLocation
+ git fetch origin --quiet
+ git checkout foo --quiet
+ repoLocation="$(pwd)"
+
+ remote_branch="$(remote_branch_name)"
+
+ debug_output="$(
+ {
+ output="$(
+ remote_behind_of_master "$remote_branch";
+ )"
+ } 2>&1
+ echo "$output"
+ )"
+
+ assertEquals "0" "$debug_output"
+ debug_output="$(
+ {
+ output="$(
+ remote_ahead_of_master "$remote_branch";
+ )"
+ } 2>&1
+ echo "$output"
+ )"
+
+ assertEquals "0" "$debug_output"
+
+ rm_tmp
+}
. ./shunit/shunit2