From: Junio C Hamano <gitster@pobox.com>
To: Kim Altintop <kim@eagain.st>
Cc: git@vger.kernel.org, jonathantanmy@google.com, bwilliams.eng@gmail.com
Subject: Re: [PATCH 1/3] t5730: introduce fetch command helper
Date: Mon, 09 Aug 2021 12:16:22 -0700 [thread overview]
Message-ID: <xmqq8s1afmyh.fsf@gitster.g> (raw)
In-Reply-To: <20210809175530.75326-2-kim@eagain.st> (Kim Altintop's message of "Mon, 09 Aug 2021 17:56:45 +0000")
Kim Altintop <kim@eagain.st> writes:
> Assembling a "raw" fetch command to be fed directly to "test-tool serve-v2"
> is extracted into a test helper.
>
> Suggested-by: Junio C Hamano <gitster@pobox.com>
> Signed-off-by: Kim Altintop <kim@eagain.st>
> ---
> t/t5703-upload-pack-ref-in-want.sh | 107 ++++++++++++++++++++---------
> 1 file changed, 74 insertions(+), 33 deletions(-)
>
> diff --git a/t/t5703-upload-pack-ref-in-want.sh b/t/t5703-upload-pack-ref-in-want.sh
> index e9e471621d..cd4744b016 100755
> --- a/t/t5703-upload-pack-ref-in-want.sh
> +++ b/t/t5703-upload-pack-ref-in-want.sh
> @@ -40,6 +40,54 @@ write_command () {
> fi
> }
>
> +# Write a complete fetch command to stdout, suitable for use with `test-tool
> +# pkt-line`. "want-ref", "want", and "have" values can be given in this order,
> +# with sections separated by "--".
> +#
> +# Examples:
> +#
> +# write_fetch_command refs/heads/main
> +#
> +# write_fetch_command \
> +# refs/heads/main \
> +# -- \
> +# -- \
> +# $(git rev-parse x)
> +#
> +# write_fetch_command \
> +# --
> +# $(git rev-parse a) \
> +# --
> +# $(git rev-parse b)
Have a blank line here (or a line with "#" and nothing else) and it
would become easier to read.
> +write_fetch_command () {
> + write_command fetch &&
> + echo "0001" &&
> + echo "no-progress" || return
The "while :" in this helper function are indented with 4 spaces,
not a single tab.
> + while :
> + do
> + case $# in 0) break ;; esac &&
> + case "$1" in --) shift; break ;; esac &&
> + echo "want-ref $1" &&
> + shift || return
> + done &&
> + while :
> + do
> + case $# in 0) break ;; esac &&
> + case "$1" in --) shift; break ;; esac &&
> + echo "want $1" &&
> + shift || return
> + done &&
> + while :
> + do
> + case $# in 0) break ;; esac &&
> + case "$1" in --) shift; break ;; esac &&
> + echo "have $1" &&
> + shift || return
> + done &&
> + echo "done" &&
> + echo "0000"
> +}
The error checking of the helper function seems to be reasonable,
but ...
> # c(o/foo) d(o/bar)
> # \ /
> # b e(baz) f(main)
> @@ -97,15 +145,13 @@ test_expect_success 'basic want-ref' '
> EOF
> git rev-parse f >expected_commits &&
>
> test-tool pkt-line pack >in <<-EOF &&
> + $(write_fetch_command \
> + refs/heads/main \
> + -- \
> + -- \
> + $(git rev-parse a) \
> + )
> EOF
> test-tool serve-v2 --stateless-rpc >out <in &&
... the code that uses the helper needs rewriting to make use of
it. A failure in $(write_fetch_command) here will not cause the
caller to stop here. If we had any "git" command used in the
helper, I would recommand restructuring the caller to do something
like:
write_fetch_command >pkt-src \
refs/heads/main \
-- \
-- \
$(git rev-parse a) &&
test-tool pkt-line pack <pkt-src >in &&
test-tool serve-v2 --stateless-rpc >out <in &&
but it probably may not be necessary (we only use "echo" there, and
it probably is not worth worrying about 'echo' failing).
The call to $(git rev-parse a) might fail when rev-parse gets
broken, and I think the rewritten version would catch such a
breakage while the one inside $(write_fetch_command) in the here-doc
would not be.
next prev parent reply other threads:[~2021-08-09 19:16 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-30 13:59 [PATCH] upload-pack.c: treat want-ref relative to namespace Kim Altintop
2021-07-30 14:04 ` Kim Altintop
2021-07-30 18:57 ` Junio C Hamano
2021-07-30 21:08 ` Kim Altintop
2021-07-31 20:36 ` [PATCH v2] " Kim Altintop
2021-08-02 21:06 ` Jonathan Tan
2021-08-04 20:36 ` Kim Altintop
2021-08-04 20:42 ` [PATCH v3] " Kim Altintop
2021-08-04 21:00 ` [PATCH v4] " Kim Altintop
2021-08-09 17:56 ` [PATCH 0/3] upload-pack: " Kim Altintop
2021-08-09 17:56 ` [PATCH 1/3] t5730: introduce fetch command helper Kim Altintop
2021-08-09 19:16 ` Junio C Hamano [this message]
2021-08-09 21:18 ` Kim Altintop
2021-08-09 19:40 ` Jonathan Nieder
2021-08-09 21:43 ` Junio C Hamano
2021-08-09 21:56 ` Kim Altintop
2021-08-09 22:03 ` Junio C Hamano
2021-08-09 23:01 ` Jonathan Nieder
2021-08-10 9:44 ` Kim Altintop
2021-08-09 17:57 ` [PATCH 2/3] upload-pack.c: treat want-ref relative to namespace Kim Altintop
2021-08-09 17:57 ` [PATCH 3/3] docs: clarify the interaction of transfer.hideRefs and namespaces Kim Altintop
2021-08-10 9:49 ` Kim Altintop
2021-08-13 6:23 ` [PATCH v6 0/3] upload-pack: treat want-ref relative to namespace Kim Altintop
2021-08-14 21:46 ` Johannes Schindelin
2021-08-15 17:59 ` Junio C Hamano
2021-08-15 19:35 ` Kim Altintop
2021-08-16 12:39 ` Johannes Schindelin
2021-08-13 6:23 ` [PATCH v6 1/3] t5730: introduce fetch command helper Kim Altintop
2021-08-13 6:23 ` [PATCH v6 2/3] upload-pack.c: treat want-ref relative to namespace Kim Altintop
2021-08-13 6:23 ` [PATCH v6 3/3] docs: clarify the interaction of transfer.hideRefs and namespaces Kim Altintop
2021-08-04 21:15 ` [PATCH v3] upload-pack.c: treat want-ref relative to namespace Junio C Hamano
2021-08-04 22:04 ` Kim Altintop
2021-08-04 22:17 ` Eric Sunshine
2021-08-04 22:17 ` Junio C Hamano
2021-08-04 22:23 ` 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=xmqq8s1afmyh.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=bwilliams.eng@gmail.com \
--cc=git@vger.kernel.org \
--cc=jonathantanmy@google.com \
--cc=kim@eagain.st \
/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).