git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] gitignore.5: Clarify matching rules

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Mar 5, 2010, 15:56 UTC
Message-ID
<20100305155639.GA25080@progeny.tock>
In-Reply-To
<4B912469.8060705@viscovery.net>

Patterns containing a / are implicitly anchored to the directory containing the relevant .gitignore file.

Patterns not containing a / are textual matches against the path name relative to the directory containing .gitignore.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
Johannes Sixt wrote:
Show 5 quoted lines
> When the pattern "Documentation/*.html" matches
> "Documentation/git.html", then it cannot match
> "tools/perf/Documentation/perf-diff.html". This is because patterns that
> contain a slash (after stripping a trailing slash) are anchored at the
> directory that contains the .gitignore.
Oh!  The documentation could definitely use clarification here.
Thanks.
 Documentation/gitignore.txt |   14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/Documentation/gitignore.txt b/Documentation/gitignore.txt
index 98c459d..e10fa88 100644
--- a/Documentation/gitignore.txt
+++ b/Documentation/gitignore.txt
@@ -83,16 +83,20 @@ Patterns have the following format:
 
  - If the pattern does not contain a slash '/', git treats it as
    a shell glob pattern and checks for a match against the
-   pathname without leading directories.
+   pathname relative to the location of the `.gitignore` file
+   (relative to the toplevel of the work tree if not from a
+   `.gitignore` file).
 
  - Otherwise, git treats the pattern as a shell glob suitable
    for consumption by fnmatch(3) with the FNM_PATHNAME flag:
    wildcards in the pattern will not match a / in the pathname.
    For example, "Documentation/\*.html" matches
-   "Documentation/git.html" but not
-   "Documentation/ppc/ppc.html".  A leading slash matches the
-   beginning of the pathname; for example, "/*.c" matches
-   "cat-file.c" but not "mozilla-sha1/sha1.c".
+   "Documentation/git.html" but not "Documentation/ppc/ppc.html"
+   or "tools/perf/Documentation/perf.html".
+
+ - A leading slash matches the beginning of the pathname.
+   For example, "/*.c" matches "cat-file.c" but not
+   "mozilla-sha1/sha1.c".
 
 An example:
 
-- 
1.7.0
Previous: Johannes SixtNext: Junio C Hamano
Message 18 of 19 in “gitignore broken in git 1.7.0.1: slash checks leading dirs”
  1. Jiri SlabyMar 5, 2010
  2. Johannes SixtMar 5, 2010
  3. Jiri SlabyMar 5, 2010
  4. Johannes SixtMar 5, 2010
  5. 1/1 gitignore: do not ignore include/linux/Jiri Slaby, Mar 5, 2010
  6. Jakub NarebskiMar 5, 2010
  7. Jiri SlabyMar 5, 2010
  8. David RientjesMar 10, 2010
  9. Américo WangMar 10, 2010
  10. David RientjesMar 10, 2010
  11. Américo WangMar 8, 2010
  12. Jiri SlabyMar 5, 2010
  13. Jonathan NiederMar 5, 2010
  14. Jiri SlabyMar 5, 2010
  15. Jonathan NiederMar 5, 2010
  16. Jonathan NiederMar 5, 2010
  17. Johannes SixtMar 5, 2010
  18. gitignore.5: Clarify matching rulesJonathan Nieder, Mar 5, 2010
  19. Junio C HamanoMar 5, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.