diff options
Diffstat (limited to 'git-base.sh')
-rwxr-xr-x | git-base.sh | 67 |
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" } |