On Thu, Mar 21, 2013 at 10:44 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Thomas Rast <trast@xxxxxxxxxxxxxxx> writes: > >> I think it would actually be a somewhat interesting feature if it >> interacted with GIT_PS1_SHOW*. If you use these settings (I personally >> use SHOWDIRTYSTATE but not SHOWUNTRACKEDFILES), the prompt hangs while >> __git_ps1 runs git-status. It should be possible to run a git-status >> process in the background when entering a repository, and displaying >> some marker ('??' maybe) in the prompt instead of the dirty-state info >> until git-status has finished. > > This is somewhat interesting. > > Perhaps we can introduce a helper binary that does what __git_ps1() > does, with a --timeout=500ms option to say "I dunno (yet)", and keep > priming the well in the background when it takes more than the > specified amount of time? That would be nice. My fork-fu is weak, so I cheated and relied on kill/timeout instead. I have had this code below in my zsh git prompt (based on oh-my-zsh) for more than a year. It uses $(timeout) to kill the status command if it does not complete in 1 second. It's dumb in several ways, but it does show me four different flags fairly reliably indicating whether I have changed files, untracked files, clean workdir, or I timed out trying to find out. git_dirty_timeout () { #-- Modified files xx=$(timeout 1s git status -s $@ 2> /dev/null) test $? -eq 124 && return 124 test -n ${xx} && return 50 #-- Untracked files (only) xx=$(timeout 1s git status -s -uno $@ 2> /dev/null) test $? -eq 124 && return 124 test -n ${xx} && return 51 return 0 } parse_git_dirty () { git_dirty_timeout case "$?" in '50') echo "$ZSH_THEME_GIT_PROMPT_DIRTY" ;; '51') echo "$ZSH_THEME_GIT_PROMPT_UNTRACKED" ;; '124') echo "$ZSH_THEME_GIT_PROMPT_TIMEOUT" ;; *) echo "[$?]$ZSH_THEME_GIT_PROMPT_CLEAN" ;; esac } -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html