[PATCH v2 3/5] completion: improve existence check for pseudo-refs
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Jan 15, 2024, 10:36 UTC
- Message-ID
- <ab6e9118a552308d7121b6a1c12a8f04c4788326.1705314554.git.ps@pks.im>
- In-Reply-To
- <cover.1705314554.git.ps@pks.im>
Improve the existence check along the following lines:
- Stop stripping the "ref :" prefix and compare to the expected value
directly. This allows us to drop a now-unused variable that was
previously leaking into the user's shell. - Mark the "head" variable as local so that we don't leak its value
into the user's shell. - Stop manually handling the `-C $__git_repo_path` option, which the
`__git ()` wrapper aleady does for us. - In simlar spirit, stop redirecting stderr, which is also handled by
the wrapper already.Suggested-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Patrick Steinhardt <ps@pks.im> --- contrib/completion/git-completion.bash | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 06a9107449..d703e3e64f 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -137,6 +137,7 @@ __git_eread () __git_pseudoref_exists () { local ref=$1 + local head __git_find_repo_path @@ -146,9 +147,8 @@ __git_pseudoref_exists () # Bash builtins since executing Git commands are expensive on some # platforms. if __git_eread "$__git_repo_path/HEAD" head; then - b="${head#ref: }" - if [ "$b" == "refs/heads/.invalid" ]; then - __git -C "$__git_repo_path" rev-parse --verify --quiet "$ref" 2>/dev/null + if [ "$head" == "ref: refs/heads/.invalid" ]; then + __git rev-parse --verify --quiet "$ref" return $? fi fi
-- 2.43.GIT