summaryrefslogtreecommitdiff
path: root/merge-blobs.h
diff options
context:
space:
mode:
authorMichael J Gruber <git@drmicha.warpmail.net>2014-06-17 00:03:43 (GMT)
committerJunio C Hamano <gitster@pobox.com>2014-06-17 20:39:52 (GMT)
commit7b1732c11605f84b809bd120401df49866c27141 (patch)
tree9dcd209fc7704b4a6af39979927f3faffd0af85a /merge-blobs.h
parent526d56e07200483fc93be9c2dfee81bb87713c9b (diff)
downloadgit-7b1732c11605f84b809bd120401df49866c27141.zip
git-7b1732c11605f84b809bd120401df49866c27141.tar.gz
git-7b1732c11605f84b809bd120401df49866c27141.tar.bz2
t7510: use consistent &&-chains in loop
We check multiple commits in a loop. Because we want to break out of the loop if any single iteration fails, we use a subshell/exit like: ( for i in $stuff do do-something $i || exit 1 done ) However, we are inconsistent in our loop body. Some commands get their own "|| exit 1", and others try to chain to the next command with "&&", like: X && Y || exit 1 Z || exit 1 This is a little hard to read and follow, because X and Y are treated differently for no good reason. But much worse, the second loop follows a similar pattern and gets it wrong. "Y" is expected to fail, so we use "&& exit 1", giving us: X && Y && exit 1 Z || exit 1 That gets the test for X wrong (we do not exit unless both X fails and Y unexpectedly succeeds, but we would want to exit if _either_ is wrong). We can write this clearly and correctly by consistently using "&&", followed by a single "|| exit 1", and negating Y with "!" (as we would in a normal &&-chain). Like: X && ! Y && Z || exit 1 Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'merge-blobs.h')
0 files changed, 0 insertions, 0 deletions