[PATCH 2/4] Makefile: exclude test cruft from FIND_SOURCE_FILES
- From
Jeff King <peff@peff.net>
- Date
- Dec 14, 2016, 14:28 UTC
- Message-ID
- <20161214142804.b6q7enowcavagmam@sigill.intra.peff.net>
- In-Reply-To
- <20161214142533.svktxk63eiwaaeor@sigill.intra.peff.net>
The test directory may contain three types of files that match our patterns:
1. Helper programs in t/helper.
2. Sample data files (e.g., t/t4051/hello.c).
3. Untracked cruft in trash directories and t/perf/build.
We want to match (1), but not the other two, as they just clutter up the list.
For the ls-files method, we can drop (2) with a negative pathspec. We do not have to care about (3), since ls-files will not list untracked files.
For `find`, we can match both cases with `-prune` patterns.
Signed-off-by: Jeff King <peff@peff.net> --- I expected that:
':![tp][0-9][0-9][0-9][0-9]'
would work, but it doesn't. I think because we don't match intermediate directories against pathspecs. So you have to use wildcards to match the rest of the path.
Makefile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile index f42b1953d..001126931 100644 --- a/Makefile +++ b/Makefile @@ -2150,9 +2150,15 @@ po/build/locale/%/LC_MESSAGES/git.mo: po/%.po $(QUIET_MSGFMT)mkdir -p $(dir $@) && $(MSGFMT) -o $@ $< FIND_SOURCE_FILES = ( \ - git ls-files '*.[hcS]' 2>/dev/null || \ + git ls-files \ + '*.[hcS]' \ + ':!*[tp][0-9][0-9][0-9][0-9]*' \ + 2>/dev/null || \ $(FIND) . \ \( -name .git -type d -prune \) \ + -o \( -name '[tp][0-9][0-9][0-9][0-9]' -type d -prune \) \ + -o \( -name build -type d -prune \) \ + -o \( -name 'trash*' -type d -prune \) \ -o \( -name '*.[hcS]' -type f -print \) \ )
-- 2.11.0.341.g202cd3142