# Add one pattern per line.
#
# The patterns listed in this file will be compared with the list of files
# changed in a patch series (Pull Request) and if all files in the pull request
# are matched, then sanitycheck will not do a full run and optionally will only
# run on changed tests or boards.
#
.gitlint
.checkpatch.conf
.clang-format
.codecov.yml
.editorconfig
.gitattributes
.gitignore
.known-issues
.mailmap
.uncrustify.cfg
CODEOWNERS
MAINTAINERS.yml
LICENSE
Makefile
tests/*
samples/*
boards/*/*/*
doc/*
# GH action have no impact on code
.github/*
*.rst
*.md
# if we change this file or associated script, it should not trigger a full
# sanitycheck.
scripts/ci/sanitycheck_ignore.txt
scripts/ci/what_changed.py
scripts/requirements*
