Re: [PATCH/RFC] Add global and system-wide gitattributes
- From
Petr Onderka <gsvick@gmail.com>
- Date
- Aug 16, 2010, 16:51 UTC
- Message-ID
- <AANLkTi=2tRjGicxJxnJ3xccCGxcP3bLUy8u0O7q85D=R@mail.gmail.com>
- In-Reply-To
- <7vzkwsvllz.fsf@alter.siamese.dyndns.org>
Hi,
On Thu, Aug 12, 2010 at 00:19, Junio C Hamano <gitster@pobox.com> wrote:
Show 25 quoted lines
> Have you read the comment at the top of prepare-attr-stack? This patch > feels triply wrong: > > - The attribute stack is arranged to have higher precedence file near the > top ($GIT_DIR/info/attributes used to be the highest). The above > addition means that ~/.gitattributes from user's home trumps what is in > a particular repository. That is backwards. You may work on more than > one projects and have more than one repositories. What you share among > them personally will go to ~/.gitattributes, while a setting specific > to a particular repository goes to $GIT_DIR/info/attributes and the > latter needs to be able to override the former. > > - Same thing for git_attr_system() being at the end, which means you set > up your own $GIT_DIR/info/attributes (or ~/.gitattributes) carefully > but that can be broken by a selfish sysadmin who puts stuff that is > only useful to him in /etc/gitattributes, which is not what you want. > > - Whenever we enter a new directory (either recursing into, or coming > back up), prepare_attr_stack() is called to pop the attributes records > from now-exited directories and push the attributes records from > directories we are about to descend into. The current code knows that > the topmost element on the stack is special ($GIT_DIR/info/attributes) > and first pops it, adjust the stack for elements that came from the > directory hierarcy, and then pushes that back. I don't see any code in > the patch to do the equivalent for these two new attribute sources.
Yeah, I realize now that I got the precedence wrong, the corrected patch is in the following email.
But to your third point, I read the comment and the code worked, because I put all the attributes from the 3 files into one attr_stack struct (the one at the top of the stack). That's why I changed read_attr_from_file too. Of course this is irrelevant now that those attributes will be at the bottom of the stack.
Petr Onderka