populate-fully.sh: don't enter the repository if updating working tree fails
[config/vcsh.git] / .config / vcsh / hooks-available / populate-sparsely.sh
index 387ec21..33c1fb0 100755 (executable)
@@ -5,6 +5,9 @@ set -e
 # Only the same instance of vcsh that had the working tree fully populated is
 # allowed to repopulate it sparsely.
 LOCKDIR=/run/lock/vcsh
 # Only the same instance of vcsh that had the working tree fully populated is
 # allowed to repopulate it sparsely.
 LOCKDIR=/run/lock/vcsh
+
+# If LOCKDIR does not exist it means that the lock is not active so there's no
+# need to do anything.
 [ -d "$LOCKDIR" ] || exit 0
 
 LOCKPID=$(cat "$LOCKDIR/pid")
 [ -d "$LOCKDIR" ] || exit 0
 
 LOCKPID=$(cat "$LOCKDIR/pid")
@@ -13,7 +16,14 @@ LOCKPID=$(cat "$LOCKDIR/pid")
 
 : "${XDG_CONFIG_HOME:="$HOME/.config"}"
 . "$XDG_CONFIG_HOME/vcsh/hooks-available/sparse-checkout.sh"
 
 : "${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"
 
 # Unlock the working tree.
 rm -rf "$LOCKDIR"