# Below we forbid everything and only allow what we know, that's much easier
# than blocking about 500 different test files and bug report outputs.
/.*
/*
!/.cirrus.yml
!/.gitattributes
!/.github
!/.gitignore
!/.travis.yml
!/CHANGELOG
!/LICENSE
!/BRANCHES
!/Makefile
!/README
!/INSTALL
!/CONTRIBUTING
!/MAINTAINERS
!/ROADMAP
!/SUBVERS
!/VERDATE
!/VERSION
!/contrib
!/admin
!/dev
!/doc
!/ebtree
!/examples
!/include
!/src
!/tests
!/debian
!/scripts
!/reg-tests
# Reject some generic files
*.o
*.a
*~
*.rej
*.orig
*.bak
# And reject some specific files
/admin/halog/halog
/admin/iprange/ip6range
/admin/iprange/iprange
/admin/systemd/haproxy.service
/contrib/spoa_example/spoa
dev/base64/base64rev-gen
dev/flags/flags
dev/poll/poll
dev/tcploop/tcploop
dev/hpack/decode
dev/hpack/gen-rht
contrib/mod_defender/defender
contrib/modsecurity/modsecurity
/src/dlmalloc.c
/tests/test_hashes
