Subject: Re: [PATCH] gitattributes.txt: mention exceptions to gitignore rules

From: Marcin Wiśnicki <[email-masked]>
Date: Tue, 4 Jan 2011 15:40:50 +0000 (UTC)

On Tue, 04 Jan 2011 20:31:55 +0700, Nguyễn Thái Ngọc Duy wrote:

> gitattr and .gitignore are supposed to use the same rules for matching
> patterns. Unfortunately it's not exactly the same in reality. Mention
> the differences so users won't be surprised, until gitattr gets updates.
> 
> 
> diff --git a/Documentation/gitattributes.txt
> b/Documentation/gitattributes.txt index 5a7f936..cfaf107 100644
> --- a/Documentation/gitattributes.txt +++
> b/Documentation/gitattributes.txt @@ -56,6 +56,7 @@ When more than one
> pattern matches the path, a later line
>  overrides an earlier line.  This overriding is done per attribute.  The
>  rules how the pattern matches paths are the same as in `.gitignore`
>  files; see linkgit:gitignore[5].
> +However patterns that end with a slash is not supported.
>  

I'm afraid that is not all. The rules I've inferred:

  1. No pattern will match directory tree.
  2. It is only possible to match on path components.
  3. If pattern contains slash it is treated as absolute.

Example for file: d1/d2/f1.c

Patterns that match:
  *.c
  d1/d2/*
  /d1/d2/*
  */d2/*
  */*/*

Patterns that do not match but should:
  d2/*
  d2/
  d2
  d1/d2
  /d1/d2