On Fri, Oct 18, 2019 at 10:23:00AM +0900, Junio C Hamano wrote: > > diff --git a/path.c b/path.c > > index e3da1f3c4e..ff85692b45 100644 > > --- a/path.c > > +++ b/path.c > > @@ -268,7 +268,7 @@ static int trie_find(struct trie *root, const char *key, match_fn fn, > > int result; > > struct trie *child; > > > > - if (!*key) { > > + if (!*key || !strcmp(key, ".lock")) { > > We only do strcmp for the tail part at the end of the path, so this > should probably OK from performance point of view but semantically > it is not very satisfying to see a special case for a single .suffix > this deep in the callchain. I wonder if it is nicer to have the > higher level callers notice ".lock" or whatever other suffixes they > care about and ask the lower layer for a key with the suffix > stripped? I was wondering the same. Despite all of its functions being file static, this is a fairly general trie implementation for paths, which could potentially be useful in other parts of Git as well. Special casing any suffix within its implementation makes it less (re)usable in other cases.