summaryrefslogtreecommitdiffstats
path: root/git-base.sh
diff options
context:
space:
mode:
authormichaeldfallen <michaeldfallen@gmail.com>2015-02-06 00:18:27 +0000
committermichaeldfallen <michaeldfallen@gmail.com>2015-02-06 00:18:27 +0000
commitdb4d3a9c42b788561bfd15d32a841cd1e8fd5a5f (patch)
treefa8091c028c5d1a582f85358fe63ab52700cb03d /git-base.sh
parentb3b64a3fbdd6545610da51a36179dae164fae2a3 (diff)
downloadgit-sonar-db4d3a9c42b788561bfd15d32a841cd1e8fd5a5f.tar.gz
git-sonar-db4d3a9c42b788561bfd15d32a841cd1e8fd5a5f.zip
don't let functions complain if we aren't in a git repo
Diffstat (limited to '')
-rwxr-xr-xgit-base.sh67
1 files changed, 51 insertions, 16 deletions
diff --git a/git-base.sh b/git-base.sh
index d0f349d..5ed680d 100755
--- a/git-base.sh
+++ b/git-base.sh
@@ -1,18 +1,45 @@
set -e
+dot_git=""
+cwd=""
+
+in_current_dir() {
+ local wd="$(pwd)"
+ if [[ "$wd" == $cwd ]]; then
+ cwd="$wd"
+ return 0
+ else
+ cwd="$wd"
+ return 1
+ fi
+}
+
debug_print() {
- debug=$1
- message=$2
+ local debug=$1
+ local message=$2
if [[ $debug == "debug" ]]; then
echo $message
fi
}
dot_git() {
- if [ -d .git ]; then
- echo ".git"
+ if [[ in_current_dir && -n "$dot_git" ]]; then
+ # cache dot_git to save calls to rev-parse
+ echo $dot_git
+ elif [ -d .git ]; then
+ dot_git=".git"
+ echo $dot_git
else
- echo "$(git rev-parse --git-dir)"
+ dot_git="$(git rev-parse --git-dir 2>/dev/null)"
+ echo $dot_git
+ fi
+}
+
+is_repo() {
+ if [[ -n "$(dot_git)" ]]; then
+ return 0
+ else
+ return 1
fi
}
@@ -20,16 +47,20 @@ git_root() {
if [ -d .git ]; then
echo "."
else
- echo "$(git rev-parse --show-toplevel)"
+ echo "$(git rev-parse --show-toplevel 2>/dev/null)"
fi
}
record_timestamp() {
- touch "$(dot_git)/lastupdatetime"
+ if is_repo; then
+ touch "$(dot_git)/lastupdatetime"
+ fi
}
timestamp() {
- echo "$(stat -f%m "$(dot_git)/lastupdatetime")"
+ if is_repo; then
+ echo "$(stat -f%m "$(dot_git)/lastupdatetime")"
+ fi
}
time_now() {
@@ -37,19 +68,23 @@ time_now() {
}
time_to_update() {
- timesincelastupdate="$(($(time_now) - $(timestamp)))"
- fiveminutes="$((5 * 60))"
- if (( "$timesincelastupdate" > "$5minutes" )); then
- # time to update return 0 (which is false)
- return 0
+ if is_repo; then
+ local timesincelastupdate="$(($(time_now) - $(timestamp)))"
+ local fiveminutes="$((5 * 60))"
+ if (( "$timesincelastupdate" > "$5minutes" )); then
+ # time to update return 0 (which is false)
+ return 0
+ else
+ # not time to update return 1 (which is true)
+ return 1
+ fi
else
- # not time to update return 1 (which is true)
return 1
fi
}
fetch_async() {
- debug="$1"
+ local debug="$1"
if time_to_update; then
debug_print $debug "Starting fetch"
fetch $debug &
@@ -59,7 +94,7 @@ fetch_async() {
}
fetch() {
- debug="$1"
+ local debug="$1"
git fetch
debug_print $debug "Finished fetch"
}