Patchwork [1,of,2] dirstate: add an extension hook for interesting files

login
register
mail settings
Submitter Siddharth Agarwal
Date May 10, 2013, 6:17 a.m.
Message ID <ed4040d92e56cd7a963f.1368166662@dev1091.prn1.facebook.com>
Download mbox | patch
Permalink /patch/1605/
State Superseded, archived
Headers show

Comments

Siddharth Agarwal - May 10, 2013, 6:17 a.m.
# HG changeset patch
# User Siddharth Agarwal <sid0@fb.com>
# Date 1366675878 25200
#      Mon Apr 22 17:11:18 2013 -0700
# Node ID ed4040d92e56cd7a963f896f72bcf55922449171
# Parent  0a031b2198905fed27a2c5adbda215c7907d3cea
dirstate: add an extension hook for interesting files

Consider a hypothetical extension that implements walk in a more efficient
manner and return only files that status would consider interesting. However,
that can only be done under some situations, such as when clean files are
not being asked for and a match.traversedir callback is not set. The
interesting flag lets walk tell these two cases apart.
Augie Fackler - May 12, 2013, 1:27 a.m.
On May 11, 2013, at 9:27 PM, Augie Fackler <raf@durin42.com> wrote:

> I think this is moving towards a replacement notify.

*inotify* #autocorrect
Siddharth Agarwal - May 13, 2013, 7:45 p.m.
On 05/11/2013 06:27 PM, Augie Fackler wrote:
>> Series looks fine to me -- since it doesn't actually do anything ;) I'll let Matt or someone with more direct knowledge of this extension you're planning actually queue it though.
> I think this is moving towards a replacement notify.

Yeah, pretty much.

Patch

diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py
--- a/mercurial/dirstate.py
+++ b/mercurial/dirstate.py
@@ -623,14 +623,23 @@ 
 
         return results, dirsfound, dirsnotfound
 
-    def walk(self, match, subrepos, unknown, ignored):
+    def walk(self, match, subrepos, unknown, ignored, interesting=False):
         '''
         Walk recursively through the directory tree, finding all files
         matched by match.
 
+        If interesting is True, only return a conservative estimate of files
+        that are somehow interesting. This should include every file that is
+        modified, added, removed, deleted, unknown or ignored (the last two if
+        requested), plus maybe some clean files.
+
         Return a dict mapping filename to stat-like object (either
         mercurial.osutil.stat instance or return value of os.stat()).
+
         '''
+        # interesting is an extension hook -- this implementation doesn't use it
+        # at all. This satisfies the contract because interesting is
+        # conservative.
 
         def fwarn(f, msg):
             self._ui.warn('%s: %s\n' % (self.pathto(f), msg))