travis-ci: check that all build artifacts are .gitignore-d

Every once in a while our explicit .gitignore files get out of sync
when our build process learns to create new artifacts, like test
helper executables, but the .gitignore files are not updated
accordingly.

Use Travis CI to help catch such issues earlier: check that there are
no untracked files at the end of any build jobs building Git (i.e. the
64 bit Clang and GCC Linux and OSX build jobs, plus the GETTEXT_POISON
and 32 bit Linux build jobs) or its documentation, and fail the build
job if there are any present.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
SZEDER Gábor 2017-12-31 17:02:06 +01:00 коммит произвёл Junio C Hamano
Родитель 88e00b7033
Коммит b92cb86ea1
4 изменённых файлов: 20 добавлений и 0 удалений

Просмотреть файл

@ -67,6 +67,16 @@ skip_good_tree () {
exit 0 exit 0
} }
check_unignored_build_artifacts ()
{
! git ls-files --other --exclude-standard --error-unmatch \
-- ':/*' 2>/dev/null ||
{
echo "$(tput setaf 1)error: found unignored build artifacts$(tput sgr0)"
false
}
}
# Set 'exit on error' for all CI scripts to let the caller know that # Set 'exit on error' for all CI scripts to let the caller know that
# something went wrong. # something went wrong.
# Set tracing executed commands, primarily setting environment variables # Set tracing executed commands, primarily setting environment variables

Просмотреть файл

@ -23,4 +23,6 @@ docker run \
daald/ubuntu32:xenial \ daald/ubuntu32:xenial \
/usr/src/git/ci/run-linux32-build.sh $(id -u $USER) /usr/src/git/ci/run-linux32-build.sh $(id -u $USER)
check_unignored_build_artifacts
save_good_tree save_good_tree

Просмотреть файл

@ -8,4 +8,6 @@
ln -s $HOME/travis-cache/.prove t/.prove ln -s $HOME/travis-cache/.prove t/.prove
make --quiet test make --quiet test
check_unignored_build_artifacts
save_good_tree save_good_tree

Просмотреть файл

@ -18,6 +18,9 @@ test -s Documentation/git.xml
test -s Documentation/git.1 test -s Documentation/git.1
grep '<meta name="generator" content="AsciiDoc ' Documentation/git.html grep '<meta name="generator" content="AsciiDoc ' Documentation/git.html
rm -f stdout.log stderr.log
check_unignored_build_artifacts
# Build docs with AsciiDoctor # Build docs with AsciiDoctor
make clean make clean
make --jobs=2 USE_ASCIIDOCTOR=1 doc > >(tee stdout.log) 2> >(tee stderr.log >&2) make --jobs=2 USE_ASCIIDOCTOR=1 doc > >(tee stdout.log) 2> >(tee stderr.log >&2)
@ -26,4 +29,7 @@ sed '/^GIT_VERSION = / d' stderr.log
test -s Documentation/git.html test -s Documentation/git.html
grep '<meta name="generator" content="Asciidoctor ' Documentation/git.html grep '<meta name="generator" content="Asciidoctor ' Documentation/git.html
rm -f stdout.log stderr.log
check_unignored_build_artifacts
save_good_tree save_good_tree