From: "SZEDER Gábor" <szeder.dev@gmail.com>
To: Stan Hu <stanhu@gmail.com>
Cc: git@vger.kernel.org, Patrick Steinhardt <ps@pks.im>,
Christian Couder <christian.couder@gmail.com>
Subject: Re: [PATCH v3 1/2] completion: refactor existence checks for pseudorefs
Date: Sat, 13 Jan 2024 22:07:14 +0100 [thread overview]
Message-ID: <20240113210714.GC3000857@szeder.dev> (raw)
In-Reply-To: <29c928649aba7dfce4dab1b5d923bc23b7af2d32.1703022850.git.stanhu@gmail.com>
On Tue, Dec 19, 2023 at 02:14:17PM -0800, Stan Hu wrote:
> In preparation for the reftable backend, this commit introduces a
> '__git_pseudoref_exists' function that continues to use 'test -f' to
> determine whether a given pseudoref exists in the local filesystem.
>
> Signed-off-by: Stan Hu <stanhu@gmail.com>
> ---
> contrib/completion/git-completion.bash | 20 +++++++++++++++-----
> 1 file changed, 15 insertions(+), 5 deletions(-)
>
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 13a39ebd2e..8edd002eed 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -122,6 +122,15 @@ __git ()
> ${__git_dir:+--git-dir="$__git_dir"} "$@" 2>/dev/null
> }
>
> +# Runs git in $__git_repo_path to determine whether a pseudoref exists.
> +# 1: The pseudo-ref to search
> +__git_pseudoref_exists ()
> +{
> + local ref=$1
> +
> + [ -f "$__git_repo_path/$ref" ]
This new helper function relies on $__git_repo_path being set, but it
doesn't ensure that it's actually set by calling __git_find_repo_path.
Instead, it relies on its callers calling __git_find_repo_path,
although after this patch none of those callers directly access
$__git_repo_path anymore.
It would be better to call __git_find_repo_path in this helper to make
it more self-contained, and then the now unnecessary
__git_find_repo_path calls from the three callers can be removed.
Yeah, I know it's late, because this patch is already in master, but
this would be a good preparation step for eventual dedicated tests of
__git_pseudoref_exists that came up in:
https://public-inbox.org/git/20240113191749.GB3000857@szeder.dev/
> +}
> +
> # Removes backslash escaping, single quotes and double quotes from a word,
> # stores the result in the variable $dequoted_word.
> # 1: The word to dequote.
> @@ -1625,7 +1634,7 @@ __git_cherry_pick_inprogress_options=$__git_sequencer_inprogress_options
> _git_cherry_pick ()
> {
> __git_find_repo_path
> - if [ -f "$__git_repo_path"/CHERRY_PICK_HEAD ]; then
> + if __git_pseudoref_exists CHERRY_PICK_HEAD; then
> __gitcomp "$__git_cherry_pick_inprogress_options"
> return
> fi
> @@ -2067,7 +2076,7 @@ _git_log ()
> __git_find_repo_path
>
> local merge=""
> - if [ -f "$__git_repo_path/MERGE_HEAD" ]; then
> + if __git_pseudoref_exists MERGE_HEAD; then
> merge="--merge"
> fi
> case "$prev,$cur" in
> @@ -2934,6 +2943,7 @@ _git_reset ()
>
> _git_restore ()
> {
> + __git_find_repo_path
> case "$prev" in
> -s)
> __git_complete_refs
> @@ -2952,7 +2962,7 @@ _git_restore ()
> __gitcomp_builtin restore
> ;;
> *)
> - if __git rev-parse --verify --quiet HEAD >/dev/null; then
> + if __git_pseudoref_exists HEAD; then
> __git_complete_index_file "--modified"
> fi
> esac
> @@ -2963,7 +2973,7 @@ __git_revert_inprogress_options=$__git_sequencer_inprogress_options
> _git_revert ()
> {
> __git_find_repo_path
> - if [ -f "$__git_repo_path"/REVERT_HEAD ]; then
> + if __git_pseudoref_exists REVERT_HEAD; then
> __gitcomp "$__git_revert_inprogress_options"
> return
> fi
> @@ -3592,7 +3602,7 @@ __gitk_main ()
> __git_find_repo_path
>
> local merge=""
> - if [ -f "$__git_repo_path/MERGE_HEAD" ]; then
> + if __git_pseudoref_exists MERGE_HEAD; then
> merge="--merge"
> fi
> case "$cur" in
> --
> 2.42.0
>
>
next prev parent reply other threads:[~2024-01-13 21:07 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-30 20:24 [PATCH 0/2] completion: refactor and support reftables backend Stan Hu
2023-11-30 20:24 ` [PATCH 1/2] completion: refactor existence checks for special refs Stan Hu
2023-11-30 20:24 ` [PATCH 2/2] completion: stop checking for reference existence via `test -f` Stan Hu
2023-12-01 7:49 ` Patrick Steinhardt
2023-12-03 13:15 ` [PATCH 1/2] completion: refactor existence checks for special refs Junio C Hamano
2023-12-01 7:49 ` [PATCH 0/2] completion: refactor and support reftables backend Patrick Steinhardt
2023-12-07 6:06 ` [PATCH v2 " Stan Hu
2023-12-07 6:06 ` [PATCH v2 1/2] completion: refactor existence checks for pseudorefs Stan Hu
2023-12-08 8:24 ` Patrick Steinhardt
2023-12-07 6:06 ` [PATCH v2 2/2] completion: support pseudoref existence checks for reftables Stan Hu
2023-12-19 22:14 ` [PATCH v3 0/2] completion: refactor and support reftables backend Stan Hu
2023-12-19 22:14 ` [PATCH v3 1/2] completion: refactor existence checks for pseudorefs Stan Hu
2024-01-13 21:07 ` SZEDER Gábor [this message]
2023-12-19 22:14 ` [PATCH v3 2/2] completion: support pseudoref existence checks for reftables Stan Hu
2023-12-20 0:48 ` [PATCH v3 0/2] completion: refactor and support reftables backend Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240113210714.GC3000857@szeder.dev \
--to=szeder.dev@gmail.com \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=ps@pks.im \
--cc=stanhu@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).