From: Antonio Ospite Date: Thu, 13 Dec 2018 23:15:05 +0000 (+0100) Subject: hooks-available: avoid some errors with empty repositories X-Git-Url: https://git.ao2.it/config/vcsh.git/commitdiff_plain/8bdae58f5b9906d57e5d4384e5fda1b93cef6aac hooks-available: avoid some errors with empty repositories When entering a repository which has just been created the HEAD reference does not exist yet and "git read-tree -mu HEAD" would complain loudly about that, giving a confusing error to users. Avoid the error by checking the validity of HEAD before updating the working tree. --- diff --git a/.config/vcsh/hooks-available/populate-fully.sh b/.config/vcsh/hooks-available/populate-fully.sh index ceff12f..0439174 100755 --- a/.config/vcsh/hooks-available/populate-fully.sh +++ b/.config/vcsh/hooks-available/populate-fully.sh @@ -30,10 +30,16 @@ fi # Lock on the parent pid because the hooks are launched as children of vcsh. echo $PPID > "$LOCKDIR/pid" -# git read-tree manual page says this is the proper way to fully repopulate -# the working tree. -git config core.sparseCheckout true -rm -f "$GIT_DIR/info/sparse-checkout" -echo "/*" > "$GIT_DIR/info/sparse-checkout" -git read-tree -mu HEAD -git config core.sparseCheckout false +# Verify if the current branch is valid before updating the working tree. +# This avoids errors with empty repositories which would only confuse the +# user. +if git rev-parse --verify HEAD >/dev/null 2>&1; +then + # git read-tree manual page says this is the proper way to fully repopulate + # the working tree. + git config core.sparseCheckout true + rm -f "$GIT_DIR/info/sparse-checkout" + echo "/*" > "$GIT_DIR/info/sparse-checkout" + git read-tree -mu HEAD + git config core.sparseCheckout false +fi diff --git a/.config/vcsh/hooks-available/populate-sparsely.sh b/.config/vcsh/hooks-available/populate-sparsely.sh index 53d2b3a..33c1fb0 100755 --- a/.config/vcsh/hooks-available/populate-sparsely.sh +++ b/.config/vcsh/hooks-available/populate-sparsely.sh @@ -16,7 +16,14 @@ LOCKPID=$(cat "$LOCKDIR/pid") : "${XDG_CONFIG_HOME:="$HOME/.config"}" . "$XDG_CONFIG_HOME/vcsh/hooks-available/sparse-checkout.sh" -git read-tree -mu HEAD + +# Verify if the current branch is valid before updating the working tree. +# This avoids errors with empty repositories which would only confuse the +# user. +if git rev-parse --verify HEAD >/dev/null 2>&1; +then + git read-tree -mu HEAD +fi # Unlock the working tree. rm -rf "$LOCKDIR"