From: Jonathan Nieder Date: Mon, 07 Nov 2011 08:09:26 GMT Subject: [PATCH 3/4] Documentation: unanchored gitignore patterns match basename Message-ID: <20111107080926.GC30486@elie.hsd1.il.comcast.net> In-Reply-To: <20111107080449.GA30448@elie.hsd1.il.comcast.net> The rule described by v1.7.1.1~31^2 (gitignore.5: Clarify matching rules, 2010-03-05) is just false: simple gitignore patterns without a slash like "foo" and "cscope*" have always matched files in all directories, not just the toplevel, and a question mark cannot be used to match the slash separating path components. For example: foo/ - matches directories named "foo" throughout the tree Documentation?foo - does not match Documentation/foo Reported-by: Y.G. Signed-off-by: Jonathan Nieder --- Documentation/gitignore.txt | 19 ++++++++++--------- 1 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Documentation/gitignore.txt b/Documentation/gitignore.txt index c7c948dd..e5715a27 100644 --- a/Documentation/gitignore.txt +++ b/Documentation/gitignore.txt @@ -80,18 +80,19 @@ PATTERN FORMAT - If the pattern does not contain a slash '/' at the beginning or in the middle, git treats it as a shell glob pattern and - matches the entire pathname including slashes, relative to the - location of the `.gitignore` file (or relative to the toplevel - of the work tree if the pattern is not from a `.gitignore` - file), against it. - For example, "{asterisk}.html" matches HTML files in the - directory containing the `.gitignore` file and in its - subdirectories. + checks if the pathname with leading path components + removed matches it. + For example, "x{asterisk}.html" matches HTML files whose + filename begins with an "x" in the directory containing + the `.gitignore` file and in its subdirectories. - If the pattern contains a slash '/' at the beginning or in the middle, git imitates the behavior of fnmatch(3) with the - FNM_PATHNAME flag: wildcards in the pattern will not match a / - in the pathname. + FNM_PATHNAME flag. The pattern is used to match the entire + pathname, relative to the location of the `.gitignore` file + (or relative to the toplevel of the work tree if the pattern + is not from a `.gitignore` file). Wildcards in the pattern + do not match a / in the pathname. For example, "Documentation/{asterisk}.html" matches "Documentation/git.html" but not "Documentation/ppc/ppc.html" or "tools/perf/Documentation/perf.html". -- 1.7.8.rc0