osmo-clean-workspace.sh: make more robust against broken git clones

Change-Id: Ifa70fd75468b3e21b5c9327ea28bc7a4c8cb549d
This commit is contained in:
Neels Hofmeyr 2018-04-09 14:43:24 +02:00
parent 91404470d6
commit e12ebb99e4
1 changed files with 25 additions and 4 deletions

View File

@ -28,16 +28,37 @@ git checkout -f HEAD
# Git automatically excludes subdirs that are git clones.
git clean -dxf
git_clean() {
repos="$1"
if [ ! -d "$repos" ]; then
return
fi
if [ ! -d "$repos/.git" ]; then
echo "Not a git clone, removing: $repos"
rm -rf "$repos"
return
fi
if ! git -C "$repos" checkout -f HEAD; then
echo "Cleaning failed, removing: $repos"
rm -rf "$repos"
return
fi
if ! git -C "$repos" clean -dxf; then
echo "Cleaning failed, removing: $repos"
rm -rf "$repos"
return
fi
}
# leave the deps checkouts around, to not clone entire git history every time,
# but clean each git of build artifacts.
if [ -d "$deps" ]; then
for dep_dir in "$deps"/* ; do
git -C "$dep_dir" checkout -f HEAD
git -C "$dep_dir" clean -dxf
git_clean "$dep_dir"
done
fi
if [ -d "layer1-headers" ]; then
git -C "layer1-headers" checkout -f HEAD
git -C "layer1-headers" clean -dxf
git_clean "layer1-headers"
fi