diff --git a/tools/cirrus_unpack_git.sh b/tools/cirrus_unpack_git.sh index bb57e75..5f93121 100755 --- a/tools/cirrus_unpack_git.sh +++ b/tools/cirrus_unpack_git.sh @@ -5,6 +5,16 @@ shopt -s failglob for PROJECT in ./git_index/* do - PROJECT_BASE=$(basename $PROJECT) - mv ${PROJECT} ./git_clones/${PROJECT_BASE}/.git/index + PROJECT_BASE="$(basename $PROJECT)" + + # It's possible that the cache contains a project that was removed from the + # build sometime after the cache was saved. In such a case, unpacking it + # would result in "No such file or directory", so we just discard it + # instead. + if [[ -d "./git_clones/${PROJECT_BASE}/.git" ]] + then + mv "${PROJECT}" "./git_clones/${PROJECT_BASE}/.git/index" + else + rm "${PROJECT}" + fi done