]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Detect "ignored yet tracked" files in GitLab CI
authorMichał Kępień <michal@isc.org>
Fri, 23 Dec 2022 12:21:47 +0000 (13:21 +0100)
committerTom Krizek <tkrizek@isc.org>
Fri, 23 Dec 2022 12:44:18 +0000 (13:44 +0100)
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.

.gitlab-ci.yml
util/check-gitignore.sh [new file with mode: 0755]

index 54b25ecd149fa6a9711dd608a858f9a90a69d500..f874bb687898a5c5aaa50c4a48be0fa5b42260f9 100644 (file)
@@ -443,6 +443,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
diff --git a/util/check-gitignore.sh b/util/check-gitignore.sh
new file mode 100755 (executable)
index 0000000..d273dd4
--- /dev/null
@@ -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