From 8b5502d32d48ab18fefe28fa03c2123ef6f518fd Mon Sep 17 00:00:00 2001 From: Bryan Joshua Pedini Date: Fri, 2 Jan 2026 13:51:03 +0100 Subject: [PATCH] maybe fixed permission checking --- update_child_repos.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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 }