<html><body><div style="color:#000; background-color:#fff; font-family:arial, helvetica, sans-serif;font-size:10pt"><div style="font-family: arial, helvetica, sans-serif; font-size: 10pt; "><span>Thanks for reviewing this, Matt. A few questions/comments below</span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><span class="Apple-style-span" style="font-family: 'times new roman', 'new york', times, serif; font-size: 16px; ">> This patch should be in multiple pieces:<br>> - introduce the basic store method<br>> - introduce the fncache method<br>> - introduce the user in cmdutil + test</span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family:
 'times new roman', 'new york', times, serif; background-color: transparent; font-style: normal; "><span class="Apple-style-span" style="font-family: arial, helvetica, sans-serif; font-size: 13px; ">I assume that step #2 will also include the fncachestore method (along with the fncache method) - just making sure I understood the protocol here. </span><br></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><span class="Apple-style-span" style="font-family: 'times new roman', 'new york', times, serif; font-size:
 16px; ">> I think the approach in fncache should be two-pass:<br>> - check for a file matching arg in the cache directly<br>> - scan for a directory match by iterating startswith over the cache</span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span>Another point of clarification: should I bundle this all into the __contains__ method on fncache? Are there any perf concerns about adding an extra scan of the cache (although, it'll only happen on cache misses)? </span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><br></span></div><div style="color:
 rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span>> localrepo.containsdir() </span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><span class="Apple-style-span" style="font-family: 'times new roman', 'new york', times, serif; font-size: 16px; ">> There should never been any absolute paths?<br><span class="Apple-style-span" style="font-family: arial, helvetica, sans-serif; font-size: 13px; ">Probably - I wasn't entirely sure, and many other functions in localrepo seemed to do that; so just wanted to be extra careful. </span><br></span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><br></span></div><div style="color: rgb(0, 0, 0);
 font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; ">>> class basicstore</div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><span class="Apple-style-span" style="font-family: 'times new roman', 'new york', times, serif; font-size: 16px; ">>> +    def __contains__(self, path):<br>>> +        '''Checks if this path exists in the store'''<br>>> +        return self.opener.exists(path)<br>> Doesn't work with directories?</span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color:
 transparent; font-style: normal; "><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span>I didn't follow this comment, Matt? </span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><span class="Apple-style-span" style="font-family: 'times new roman', 'new york', times, serif; font-size: 16px; ">>> diff --git a/tests/test-glog.t b/tests/test-glog.t<br>>> +  +nodetag
 3<br>>> +  nodetag 0<br>> ???</span><br></span></div><div style="color: rgb(0, 0, 0); font-family: 'times new roman', 'new york', times, serif; background-color: transparent; font-style: normal; "><span class="Apple-style-span" style="font-family: arial, helvetica, sans-serif; font-size: 13px; ">This is an example where hg log shows differences in output between the slow path and the fast path (we had a discussion earlier about this - </span><span class="Apple-style-span" style="font-family: arial, helvetica, sans-serif; font-size: 16px; "><a href="http://bz.selenic.com/show_bug.cgi?id=3613">http://bz.selenic.com/show_bug.cgi?id=3613</a>), </span><span class="Apple-style-span" style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span" size="2">This particular testcase is testing differences between hg log and hg log -g, and one of them now uses the fast path for an untracked file, while the other doesn't (both
 of them used to go through the slow path earlier)</font></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span>I'll make all the other changes you suggested. </span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; "><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;
 "><span>Murali</span></div><div style="font-family: arial, helvetica, sans-serif; font-size: 10pt; "><br></div>  <div style="font-size: 10pt; font-family: arial, helvetica, sans-serif; "> <div style="font-size: 12pt; font-family: 'times new roman', 'new york', times, serif; "> <div dir="ltr"> <font size="2" face="Arial"> </font></div><br> </div> </div>  </div></body></html>