Skip to content

Commit f0471a0

Browse files
committed
CCM-8881: Use git check-ignore to determine exclusions
1 parent 5fdb9d7 commit f0471a0

File tree

1 file changed

+20
-21
lines changed

1 file changed

+20
-21
lines changed

scripts/githooks/sync-template-repo.sh

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,13 @@ if [ ! -f "${MERGE_FILE}" ]; then
4242
echo "# Files and folders to merge when syncing ${TEMPLATE_REPO_DIR} back in to this repository" > ${MERGE_FILE}
4343
fi
4444

45-
# Read the .template-ignore file into an array
46-
while IFS= read -r line || [ -n "$line" ]; do
47-
IGNORED_PATHS+=("$line")
48-
done < "$IGNORE_FILE"
45+
TMP_SYNC_IGNORE=${PWD}/tmp-sync-ignore
46+
mkdir -p "${TMP_SYNC_IGNORE}"
47+
cp "${IGNORE_FILE}" "${TMP_SYNC_IGNORE}/.gitignore"
4948

50-
# Read the .template-merge file into an array
51-
while IFS= read -r line || [ -n "$line" ]; do
52-
MERGED_PATHS+=("$line")
53-
done < "$MERGE_FILE"
49+
TMP_SYNC_MERGE=${PWD}/tmp-sync-merge
50+
mkdir -p "${TMP_SYNC_MERGE}"
51+
cp "${MERGE_FILE}" "${TMP_SYNC_MERGE}/.gitignore"
5452

5553
# Check if a file is ignored.
5654
is_ignored() {
@@ -61,27 +59,25 @@ is_ignored() {
6159
return 0
6260
fi
6361

64-
for ignored in "${IGNORED_PATHS[@]}"; do
65-
if [[ -n "$ignored" && "$file" =~ $ignored ]]; then
66-
return 0
67-
fi
68-
done
69-
return 1
62+
pushd "${TMP_SYNC_IGNORE}" > /dev/null
63+
git check-ignore -q "${file}"
64+
R=$?
65+
popd > /dev/null
66+
return $R
7067
}
7168

7269
is_merge() {
7370
local file=${1}
7471

75-
for merged in "${MERGED_PATHS[@]}"; do
76-
if [[ -n "$merged" && "$file" =~ $merged ]]; then
77-
return 0
78-
fi
79-
done
80-
return 1
72+
pushd "${TMP_SYNC_MERGE}" > /dev/null
73+
git check-ignore -q "${file}"
74+
R=$?
75+
popd > /dev/null
76+
return $R
8177
}
8278

8379
# Navigate to the template directory
84-
cd "${TEMPLATE_REPO_DIR}" || exit
80+
pushd "${TEMPLATE_REPO_DIR}" || exit
8581
FILES_ADDED=()
8682
FILES_WITH_CHANGES=()
8783

@@ -127,6 +123,9 @@ while IFS= read -r -d '' file || [[ -n $file ]]; do
127123
fi
128124
done < <(find . -type f -print0)
129125

126+
popd
127+
rm -rf "${TMP_SYNC_IGNORE}" "${TMP_SYNC_MERGE}"
128+
130129
echo ------------------------------------------
131130
echo "${#FILES_ADDED[@]} files added, ${#FILES_WITH_CHANGES[@]} files with changes detected."
132131

0 commit comments

Comments
 (0)