# This is the global list of words which are still too commonly used in the
# codebase to be blocked outright. This list will continue to shrink as the
# codebase moves away from the use of these terms.
#
# Copy this file to your project and comment more words to enable the repo hook
# to block the words.
# KEEP THIS COMMENT IN YOUR COPY.
#
# Don't delete this file if you want to keep keyword_check enabled even if it's
# empty.
#
# See repohooks/README.md for more details.
# black.?hat
# black.?list
# build.?cop
crazy
cripple
dummy
# first.?class.?citizen
# grandfathered
# gr[ae]y.?hat
gr[ae]y.?list
\bhe\b
\bshe\b
\bhim\b
\bher\b
\bhis\b
\bhers\b
man.?in.?the.?middle
# master
\bmitm(\b|\d)
\bnative
\bred.?line
rtfm
\b(in)?sane(\b|\d)
sanity
# slave
# white.?glove
# white.?hat
white.?label
# white.?list
\bwtf