Re: [PATCH 12/19] bash prompt: use bash builtins to check whether inside git dir
- From
Johannes Sixt <j.sixt@viscovery.net>
- Date
- May 9, 2012, 08:07 UTC
- Message-ID
- <4FAA25B9.3010208@viscovery.net>
- In-Reply-To
- <1336524290-30023-13-git-send-email-szeder@ira.uka.de>
Am 5/9/2012 2:44, schrieb SZEDER Gábor:
Show 9 quoted lines
> __git_ps1() runs the '$(git rev-parse --is-inside-git-dir)' command > substitution to check whether we are inside a .git directory and the > bash prompt needs to be adjusted accordingly (i.e. display 'BARE!' or > 'GIT_DIR!'). This imposes the overhead of fork()ing a subshell and > fork()+exec()ing a git process. > > Perform this check by comparing the path to the repository and the > current directory using only bash builtins, thereby sparing all that > fork()+exec() overhead.
Show 6 quoted lines
> - if [ "true" = "$(git rev-parse --is-inside-git-dir 2>/dev/null)" ]; then
> + local pwd_p
> + __git_pwd_p pwd_p
> + # inside .git dir?
> + if [ "$__git_dir" = "." -o \
> + "${pwd_p#$__git_dir}" != "$pwd_p" ]; thenAt this point, $__git_dir is c:/dir style, whereas $pwd_p is /c/dir style, and the intended prefix check does not trigger.
As long as $__git_dir is only used to access files, it does not matter whether it is Windows style or POSIX style. But if $__git_dir is used in a comparison, then you must make 100% sure that the involved paths are of the same vintage.
What would be lost if this patch were dropped?
-- Hannes