gitattributes don't work
I'm trying to exclude certain paths (those that contain "xmac/gen/") from diff output using .git/info/attributes (not .gitattributes).
According to gitattributes(5) it supports patterns from gitignore(5).
Example path that must be excluded:
src/byucc/jhdl/CSRC/xmac/gen/and2_dp_g.xmac
What I've tried but didn't work:
xmac/gen/ -diff
Following works but is not what I want:
*.xmac -diff
It seems I can only get it to work for file names but not for whole paths. What am I doing wrong or is this a bug ?
git version 1.7.3.4
Quoted 2 lines · Marcin Wiśnicki
I'm trying to exclude certain paths (those that contain "xmac/gen/") from diff output using .git/info/attributes (not .gitattributes).
Tricky. Have you tried
xmac?gen? -diff
? You might also be interested in the nd/struct-pathspec branch:
git clone git://repo.or.cz/git.git
cd git
git log --grep=nd/struct-pathspec
for some work and explanation on patterns used to specify paths.
Regards,
Jonathan
Quoted 10 lines · Marcin Wiśnicki
I'm trying to exclude certain paths (those that contain "xmac/gen/") from diff output using .git/info/attributes (not .gitattributes).
According to gitattributes(5) it supports patterns from gitignore(5).
Example path that must be excluded:
src/byucc/jhdl/CSRC/xmac/gen/and2_dp_g.xmacWhat I've tried but didn't work:
xmac/gen/ -diff
Why not "xmac/gen/* -diff" or even "xmac/gen/*.xmac -diff"?
2011/1/3 Marcin Wiśnicki <[email protected]>:
Quoted 8 lines
I'm trying to exclude certain paths (those that contain "xmac/gen/") from diff output using .git/info/attributes (not .gitattributes).
According to gitattributes(5) it supports patterns from gitignore(5).
Example path that must be excluded:
src/byucc/jhdl/CSRC/xmac/gen/and2_dp_g.xmac
Quoted 8 lines
What I've tried but didn't work:
xmac/gen/ -diffFollowing works but is not what I want:
*.xmac -diffIt seems I can only get it to work for file names but not for whole paths. What am I doing wrong or is this a bug ?
While gitattributes(5) says that, actually gitattributes and gitignore use different matching implementations. gitattributes one seems unchanged since its introduction in d0bfd02 (Add basic infrastructure to assign attributes to paths - 2007-04-12). gitignore on the other hand learned foo/ pattern later in d6b8fc3 (gitignore(5): Allow "foo/" in ignore list to match directory "foo" - 2008-01-31).
Yeah, it looks like a bug to me. A better way to solve this once and for all, is to unify the two implementations (which is good for gitattr because there have been optimizations added to gitignore). I tried long ago and gave up. Something to do with the order of matching (gitignore tries inner directories first, while gitattr starts from outer ones).
For the time being, anyone who changes gitignore should be reminded to consider whether it's applicable to gitattributes and vice versa.
Which reminds me, Joshua, maybe you should add case-insensitive support to gitattributes too ;-)
Signature · 1 line
Duy
Quoted 10 lines · Nguyen Thai Ngoc Duy
2011/1/3 Marcin Wiśnicki <[email protected]>:
Quoted 2 lines
According to gitattributes(5) it supports patterns from gitignore(5).
While gitattributes(5) says that, actually gitattributes and gitignore [snip]
Yeah, it looks like a bug to me. A better way to solve this once and for [snip]
For the time being, anyone who changes gitignore should be reminded to consider whether it's applicable to gitattributes and vice versa.
I think that for the time being at least the manual page must change to reflect reality.