diff --git a/update_child_repos.sh b/update_child_repos.sh index bfdaea8..bf425c6 100755 --- a/update_child_repos.sh +++ b/update_child_repos.sh @@ -18,21 +18,30 @@ PREVIOUS_COMMIT_ID=$(git log --format="%H" -n 2 HEAD | tail -n 1) if [ "${PREVIOUS_COMMIT_ID}" = "${CURRENT_COMMIT_ID}" ]; then FILES_CHANGED="" + FILES_PERMISSION_CHANGED="" else FILES_CHANGED=$(git diff --name-only "${PREVIOUS_COMMIT_ID}" "${CURRENT_COMMIT_ID}" | tr '\n' ' ') + FILES_PERMISSION_CHANGED=$(git diff --summary "${PREVIOUS_COMMIT_ID}" "${CURRENT_COMMIT_ID}" | grep "mode change" | sed -E 's/.*mode change [0-9]+ => [0-9]+ (.*)/\1/' | tr '\n' ' ') fi is_file_changed() { local file_to_check="$1" - if [ -z "${FILES_CHANGED}" ]; then + if [ -z "${FILES_CHANGED}" ] && [ -z "${FILES_PERMISSION_CHANGED}" ]; then return 1 fi - + + # Check if file was changed (content or permissions) for changed_file in ${FILES_CHANGED}; do if [ "${changed_file}" = "${file_to_check}" ]; then return 0 fi done + + for changed_file in ${FILES_PERMISSION_CHANGED}; do + if [ "${changed_file}" = "${file_to_check}" ]; then + return 0 + fi + done return 1 }