Re: [RFC PATCH] t5500-fetch-pack.sh: fix suppression of Git exit code in tests
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 11, 2026, 22:50 UTC
- Message-ID
- <xmqq8qe3pxvm.fsf@gitster.g>
- In-Reply-To
- <20260111202137.257405-1-shreyanshpaliwalcmsmn@gmail.com>
Shreyansh Paliwal <shreyanshpaliwalcmsmn@gmail.com> writes:
> + test_oid algo >oid_algo && > + git rev-parse other >oid_other && > + git rev-parse main >oid_main &&
It is unusual to take these to temporary files. If you want to reuse the value more than once, it is more common to take them in variables.
> GIT_PROTOCOL=version=2 git upload-pack . <<-EOF >/dev/null > 0012command=fetch > - $(echo "object-format=$(test_oid algo)" | packetize) > + $(echo "object-format=$(<oid_algo)" | packetize)
The construct $(<file) is bashism, that does not work if your shell is not bash, isn't it? If you used a variable, e.g.,
$(echo "object-format=$oid_algo" | packetize)
that would make the result more portable.
In any case, since the output of "echo" is sent to "| packetize", the exit code of $(test_oid algo) would not affect the bigger picture, and so would a failure from $(<oid_algo). I am not sure if this conversion has any value wrt to "suppression of exit code". If $(<oid_algo) construct fails to read the oid_algo file, the upstream of "| packetize" may exit with non-zero code, but the downstream of the pipe would hide it.
THe same comment applies to other two uses of $(<file) construct.