]> 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 13:29:48 +0000 (14:29 +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.

(cherry picked from commit 5b28da7ea0c378435736a8cf4021740055bad3ca)

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

index 6566c2d4fe3a4d0de99c866148afd0405ce27a2a..beec448aefe771252b86b68ce2588eb5f1740d24 100644 (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
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