mirror of
https://github.com/git/git.git
synced 2024-10-31 14:27:54 +01:00
f1ed7fea79
check-attr and check-ignore have the potential to deadlock callers which do not read back the output in real-time. For example, if a caller writes N paths out and then reads N lines back in, it risks becoming blocked on write() to check-*, and check-* is blocked on write back to the caller. Somebody has to buffer; the pipe buffers provide some leeway, but they are limited. Thanks to Peff for pointing this out: http://article.gmane.org/gmane.comp.version-control.git/220534 Signed-off-by: Adam Spiers <git@adamspiers.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
109 lines
3.4 KiB
Text
109 lines
3.4 KiB
Text
git-check-ignore(1)
|
|
===================
|
|
|
|
NAME
|
|
----
|
|
git-check-ignore - Debug gitignore / exclude files
|
|
|
|
|
|
SYNOPSIS
|
|
--------
|
|
[verse]
|
|
'git check-ignore' [options] pathname...
|
|
'git check-ignore' [options] --stdin < <list-of-paths>
|
|
|
|
DESCRIPTION
|
|
-----------
|
|
|
|
For each pathname given via the command-line or from a file via
|
|
`--stdin`, show the pattern from .gitignore (or other input files to
|
|
the exclude mechanism) that decides if the pathname is excluded or
|
|
included. Later patterns within a file take precedence over earlier
|
|
ones.
|
|
|
|
OPTIONS
|
|
-------
|
|
-q, --quiet::
|
|
Don't output anything, just set exit status. This is only
|
|
valid with a single pathname.
|
|
|
|
-v, --verbose::
|
|
Also output details about the matching pattern (if any)
|
|
for each given pathname.
|
|
|
|
--stdin::
|
|
Read file names from stdin instead of from the command-line.
|
|
|
|
-z::
|
|
The output format is modified to be machine-parseable (see
|
|
below). If `--stdin` is also given, input paths are separated
|
|
with a NUL character instead of a linefeed character.
|
|
|
|
-n, --non-matching::
|
|
Show given paths which don't match any pattern. This only
|
|
makes sense when `--verbose` is enabled, otherwise it would
|
|
not be possible to distinguish between paths which match a
|
|
pattern and those which don't.
|
|
|
|
OUTPUT
|
|
------
|
|
|
|
By default, any of the given pathnames which match an ignore pattern
|
|
will be output, one per line. If no pattern matches a given path,
|
|
nothing will be output for that path; this means that path will not be
|
|
ignored.
|
|
|
|
If `--verbose` is specified, the output is a series of lines of the form:
|
|
|
|
<source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>
|
|
|
|
<pathname> is the path of a file being queried, <pattern> is the
|
|
matching pattern, <source> is the pattern's source file, and <linenum>
|
|
is the line number of the pattern within that source. If the pattern
|
|
contained a `!` prefix or `/` suffix, it will be preserved in the
|
|
output. <source> will be an absolute path when referring to the file
|
|
configured by `core.excludesfile`, or relative to the repository root
|
|
when referring to `.git/info/exclude` or a per-directory exclude file.
|
|
|
|
If `-z` is specified, the pathnames in the output are delimited by the
|
|
null character; if `--verbose` is also specified then null characters
|
|
are also used instead of colons and hard tabs:
|
|
|
|
<source> <NULL> <linenum> <NULL> <pattern> <NULL> <pathname> <NULL>
|
|
|
|
If `-n` or `--non-matching` are specified, non-matching pathnames will
|
|
also be output, in which case all fields in each output record except
|
|
for <pathname> will be empty. This can be useful when running
|
|
non-interactively, so that files can be incrementally streamed to
|
|
STDIN of a long-running check-ignore process, and for each of these
|
|
files, STDOUT will indicate whether that file matched a pattern or
|
|
not. (Without this option, it would be impossible to tell whether the
|
|
absence of output for a given file meant that it didn't match any
|
|
pattern, or that the output hadn't been generated yet.)
|
|
|
|
Buffering happens as documented under the `GIT_FLUSH` option in
|
|
linkgit:git[1]. The caller is responsible for avoiding deadlocks
|
|
caused by overfilling an input buffer or reading from an empty output
|
|
buffer.
|
|
|
|
EXIT STATUS
|
|
-----------
|
|
|
|
0::
|
|
One or more of the provided paths is ignored.
|
|
|
|
1::
|
|
None of the provided paths are ignored.
|
|
|
|
128::
|
|
A fatal error was encountered.
|
|
|
|
SEE ALSO
|
|
--------
|
|
linkgit:gitignore[5]
|
|
linkgit:gitconfig[5]
|
|
linkgit:git-ls-files[5]
|
|
|
|
GIT
|
|
---
|
|
Part of the linkgit:git[1] suite
|