From 428a0649fff33b43243d64e9e1556bc00811e9b6 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" Date: Tue, 1 May 2018 10:44:11 +0200 Subject: [PATCH] download/git: quickly exit when the cset does not exist Check that the given cset is indeed something we can checkout. If not, then exit early. This will be useful when a later commit will trap any failing git command to try to recover the repository by doing a clone from scratch: when the cset is not a commit, it does not mean the repository is broken or what, and re-cloning from scratch would not help, so no need to trash a good cache. Reported-by: Thomas Petazzoni Signed-off-by: "Yann E. MORIN" Cc: Thomas Petazzoni Cc: Maxime Hadjinlian Cc: Ricardo Martincoski Cc: Arnout Vandecappelle Reviewed-by: Ricardo Martincoski Tested-by: Ricardo Martincoski Signed-off-by: Thomas Petazzoni --- support/download/git | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/support/download/git b/support/download/git index 60d6c24f1e..bd37a0a8d9 100755 --- a/support/download/git +++ b/support/download/git @@ -114,6 +114,13 @@ if ! _git fetch origin "'${cset}:${cset}'" >/dev/null 2>&1; then printf "Could not fetch special ref '%s'; assuming it is not special.\n" "${cset}" fi +# Check that the changeset does exist. If it does not, no reason to go +# on, we can fast-track to the exit path. +if ! _git rev-parse --quiet --verify "'${cset}^{commit}'" >/dev/null 2>&1; then + printf "Commit '%s' does not exist in this repository\n." "${cset}" + exit 1 +fi + # Checkout the required changeset, so that we can update the required # submodules. _git checkout -q "'${cset}'"