summaryrefslogtreecommitdiff
path: root/src/lib/repo/switch.sh
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2024-04-21 10:18:55 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2024-04-21 10:18:55 +0200
commit2dc7a161a09518edae9e04a77fca569460d6a560 (patch)
tree5c893311826fc1ae7090352fb2f17a2d3d3a560e /src/lib/repo/switch.sh
parenta1ca197bc99c2d5c2977630cc4c9dbfd5461d9c1 (diff)
parent05bea3e922aa7aec5cba3242d3f34b5c10fad24e (diff)
downloaddevtools-2dc7a161a09518edae9e04a77fca569460d6a560.tar.xz
merged with upstreamHEADmaster
Diffstat (limited to 'src/lib/repo/switch.sh')
-rw-r--r--src/lib/repo/switch.sh13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/lib/repo/switch.sh b/src/lib/repo/switch.sh
index f411ac2..d8ba9df 100644
--- a/src/lib/repo/switch.sh
+++ b/src/lib/repo/switch.sh
@@ -101,16 +101,21 @@ pkgctl_repo_switch() {
fi
for path in "${paths[@]}"; do
- if ! realpath=$(realpath -e -- "${path}"); then
+ # resolve symlink for basename
+ if ! realpath=$(realpath --canonicalize-existing -- "${path}"); then
die "No such directory: ${path}"
fi
- pkgbase=$(basename "${realpath}")
-
- if [[ ! -d "${path}/.git" ]]; then
+ # skip paths that are not directories
+ if [[ ! -d "${realpath}" ]]; then
+ continue
+ fi
+ # skip paths that are not git repositories
+ if [[ ! -d "${realpath}/.git" ]]; then
error "Not a Git repository: ${path}"
continue
fi
+ pkgbase=$(basename "${realpath}")
if ! git -C "${path}" checkout "${GIT_CHECKOUT_OPTIONS[@]}" "${GIT_REF}"; then
die "Failed to switch ${pkgbase} to version ${VERSION}"
fi