Detect "ignored yet tracked" files in GitLab CI

Ensure that no .gitignore file in the tree contains patterns matching
files tracked by Git by adding a simple script that detects such
situations and running that script as part of the "misc" job in the
"precheck" stage of every GitLab CI pipeline.

(cherry picked from commit 5b28da7ea0)
This commit is contained in:
Michał Kępień 2022-12-23 13:21:47 +01:00 committed by Tom Krizek
parent ee4a18ee23
commit df5c90843b
No known key found for this signature in database
GPG key ID: 01623B9B652A20A7
2 changed files with 24 additions and 0 deletions

View file

@ -450,6 +450,7 @@ misc:
- test ! -f CHANGES.SE || sh util/check-line-length.sh CHANGES.SE
- rm CHANGES.tmp
- sh util/check-categories.sh
- sh util/check-gitignore.sh
- if git grep SYSTEMTESTTOP -- ':!.gitlab-ci.yml'; then echo 'Please use relative paths instead of $SYSTEMTESTTOP.'; exit 1; fi
- bash util/unused-headers.sh
- bash util/xmllint-html.sh

23
util/check-gitignore.sh Executable file
View file

@ -0,0 +1,23 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
ignored_yet_tracked="$(git ls-files --cached --ignored --exclude-standard | git check-ignore --verbose --stdin --no-index)"
if [ -n "${ignored_yet_tracked}" ]; then
echo "The following .gitignore files contain patterns matching tracked files:"
echo
echo "${ignored_yet_tracked}"
echo
echo "Please adjust the contents of the above .gitignore files and/or the names of the tracked files."
exit 1
fi