On Tue, Mar 20, 2018 at 5:40 AM, Jeff King <peff@xxxxxxxx> wrote: > On Tue, Mar 20, 2018 at 12:25:27AM -0400, Dakota Hawkins wrote: > >> > Right. The technical reason is mostly "that is not how it was designed, >> > and it would possibly break some corner cases if we switched it now". >> >> I'm just spitballing here, but do you guys think there's any subset of >> the combined .gitignore and .gitattributes matching functionality that >> could at least serve as a good "best-practices, going forward" >> (because of consistency) for both? I will say every time I do this for >> a new repo and have to do something even slightly complicated or >> different from what I've done before with .gitattributes/.gitignore >> that it takes me a long-ish time to figure it out. It's like I'm >> vaguely aware of pitfalls I've encountered in the past in certain >> areas but don't remember exactly what they are, so I consult the docs, >> which are (in sum) confusing and lead to more time spent >> trying/failing/trying/works/fails-later/etc. >> >> One "this subset of rules will work for both this way" would be You know, you (Dakota) could implement the new "exclude" attribute in .gitattributes and ignore .gitignore files completely. That makes it works "for both" ;-) The effort is probably not small though. >> awesome even if the matching capabilities are technically divergent, >> but on the other hand that might paint both into a corner in terms of >> functionality. > > As far as I know, they should be the same with the exception of this > recursion, and the negative-pattern thing. But I'm cc-ing Duy, who is > the resident expert on ignore and attributes matching (whether he wants > to be or not ;) ). Ha ha ha. > I wouldn't be surprised if there's something I don't know about. The only thing from the top of my head is what made me fail to unify the implementation of the two. It's basically different order of evaluation [1] when your patterns are spread out in multiple files. I think it makes gitattr and gitignore behavior different too (but I didn't try to verify). Apart from that, the two should behave the same way besides the exceptions you pointed out. [1] https://public-inbox.org/git/%3CCACsJy8B8kYU7bkD8SiK354z4u=sY3hHbe4JVwNT_1pxod1cqUw@xxxxxxxxxxxxxx%3E/ > So I think the "recommended subset" is basically "everything but these > few constructs". We just need to document them. ;) > > I probably should cc'd Duy on the documentation patch, too: > > https://public-inbox.org/git/20180320041454.GA15213@xxxxxxxxxxxxxxxxxxxxx/ > > -Peff -- Duy