Re: [RFC] Add posibility to preload stat information.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]