On 10/11/2011 11:54 AM, Junio C Hamano wrote: > Brandon Casey <casey@xxxxxxxxxxxxxxx> writes: > >> ... Currently, git builds the attr stack >> based on the path supplied by the user, so we don't have to do anything >> special (like use strcmp_icase) to handle the parts of that path that don't >> match the filesystem with respect to case. If git instead built the attr >> stack by scanning the repository, then the paths in the origin field would >> not necessarily match the paths supplied by the user. > > I find this description somewhat misleading. "check-attr" at the plumbing > level does take full path from the end user, but a common thing Git does > is to ask the system to learn the prefix to the current directory with > getcwd(3) append what fill_directory() enumerates as matching a pathspec > given by the user with readdir(3) to the prefix to form the full path, and > then feed that full path to git_check_attr(). > > Without anybody changing anything, we already do build the attr stack by > "scanning the repository" in that case, no? Well, kind of. What I meant by "scanning the repository", was having two separate mechanisms: one to build the attr stack, and one to scan it to get the attributes. Right now, the two operations are tied together and the stack is built as needed, and it is built using the same path string that the scan operation will use for checking for attributes. So, the leading paths will match. When I wrote that commit message, I really was only thinking about a user-supplied path, but the focus should be on prepare_attr_stack(). The reason the leading paths to a .gitattributes file will necessarily match is because the attr stack is built using the path supplied to prepare_attr_stack(), and the same path string is used when scanning the stack to check for attributes. So each path that is supplied, regardless of whether its case matches the case in the file system or in the repository, will have an entry in the attr stack. Maybe that last paragraph in the commit message should just be dropped. I think the preceding paragraph explains the purpose of the tests, and this last one doesn't really add any value. Do you want me to resubmit or can you fix it up? I ask not because I am too lazy to do 'commit --amend' myself, but because you may prefer to receive one less patch in your inbox if you can easily apply the change yourself. -Brandon -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html