Commit de56943a authored by Samuel Parkinson's avatar Samuel Parkinson Committed by ncanceill
Browse files

Improved the `_git_time_since_commit` function.

Check for at least one commit using a `git log` limit of one.

Improves the performance inside git repos with a large history.
parent 729b19c0
...@@ -38,34 +38,32 @@ function _ruby_version() { ...@@ -38,34 +38,32 @@ function _ruby_version() {
# Determine the time since last commit. If branch is clean, # Determine the time since last commit. If branch is clean,
# use a neutral color, otherwise colors will vary according to time. # use a neutral color, otherwise colors will vary according to time.
function _git_time_since_commit() { function _git_time_since_commit() {
if git rev-parse --git-dir > /dev/null 2>&1; then # Only proceed if there is actually a commit.
# Only proceed if there is actually a commit. if git log -1 > /dev/null 2>&1; then
if [[ $(git log 2>&1 > /dev/null | grep -c "^fatal: bad default revision") == 0 ]]; then # Get the last commit.
# Get the last commit. last_commit=$(git log --pretty=format:'%at' -1 2> /dev/null)
last_commit=$(git log --pretty=format:'%at' -1 2> /dev/null) now=$(date +%s)
now=$(date +%s) seconds_since_last_commit=$((now-last_commit))
seconds_since_last_commit=$((now-last_commit))
# Totals
# Totals minutes=$((seconds_since_last_commit / 60))
minutes=$((seconds_since_last_commit / 60)) hours=$((seconds_since_last_commit/3600))
hours=$((seconds_since_last_commit/3600))
# Sub-hours and sub-minutes
# Sub-hours and sub-minutes days=$((seconds_since_last_commit / 86400))
days=$((seconds_since_last_commit / 86400)) sub_hours=$((hours % 24))
sub_hours=$((hours % 24)) sub_minutes=$((minutes % 60))
sub_minutes=$((minutes % 60))
if [ $hours -gt 24 ]; then
if [ $hours -gt 24 ]; then commit_age="${days}d"
commit_age="${days}d" elif [ $minutes -gt 60 ]; then
elif [ $minutes -gt 60 ]; then commit_age="${sub_hours}h${sub_minutes}m"
commit_age="${sub_hours}h${sub_minutes}m" else
else commit_age="${minutes}m"
commit_age="${minutes}m"
fi
color=$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL
echo "$color$commit_age%{$reset_color%}"
fi fi
color=$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL
echo "$color$commit_age%{$reset_color%}"
fi fi
} }
...@@ -99,4 +97,3 @@ ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL="%{$fg[grey]%}" ...@@ -99,4 +97,3 @@ ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL="%{$fg[grey]%}"
export LSCOLORS="exfxcxdxbxegedabagacad" export LSCOLORS="exfxcxdxbxegedabagacad"
export LS_COLORS='di=34;40:ln=35;40:so=32;40:pi=33;40:ex=31;40:bd=34;46:cd=34;43:su=0;41:sg=0;46:tw=0;42:ow=0;43:' export LS_COLORS='di=34;40:ln=35;40:so=32;40:pi=33;40:ex=31;40:bd=34;46:cd=34;43:su=0;41:sg=0;46:tw=0;42:ow=0;43:'
export GREP_COLOR='1;33' export GREP_COLOR='1;33'
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment