Files
mfem/tests/scripts/gitignore
T

84 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
# This file is part of the MFEM library. For more information and source code
# availability visit https://mfem.org.
#
# MFEM is free software; you can redistribute it and/or modify it under the
# terms of the BSD-3 license. We welcome feedback and contributions, see file
# CONTRIBUTING.md for details.
# Print usage information
case $1 in
-h|-help)
cat <<EOF
$0 [-h|-help] {mfem_dir}
where: {mfem_dir} is the MFEM source directory [default value: ../..]
-h|-help prints this usage information and exits
This script checks for compliance with mfem's .gitignore rules in mfem_dir.
To be useful, the script should be run after the baseline (or similar) script.
Example usage: $0 ../..
EOF
exit
;;
esac
# Setup
cur_dir=`pwd`
mfem_dir=$1
if [ "$mfem_dir" = "" ]; then
mfem_dir="../.."
fi
shift
cd $mfem_dir
# Verify that files removed by "make distclean" (e.g. files generated by running
# examples and miniapps) are ignored.
(git status -s | grep -v .gitignore) 1>&2
# Verify that no other files are being ignored, with the possible exception of
# OS-specific files.
make distclean
mv .gitignore .gitignore-bak
cat > .gitignore <<EOF
*.dSYM
.DS_Store
EOF
(git status -s | grep -v .gitignore) 1>&2
mv -f .gitignore-bak .gitignore
# Return to the original directory
cd $cur_dir
# Tell users what to do if the script fails
test_name="$(basename "$0")"
if [ -s "$test_name.err" ]; then
cat > $test_name.msg <<EOF
To correct this error, make sure that the .gitignore file is properly updated.
Generally, this file should contain exactly the files that can be generated from
the repository (via building + running) that we *do not* want in the repository.
(This way such files cannot be accidentally committed.)
In particular, make sure that:
1) All new executables and outputs from example/miniapp runs (e.g. mesh or
solution files), are listed in .gitignore.
2) The patterns listed in .gitignore are the same as the ones that are deleted
by 'make distclean'.
3) Nothing else is excluded from .gitignore.
Please contact a member of the MFEM team if you have questions.
EOF
fi