# HG changeset patch # User Nicolas Dumazet # Date 2009-05-04 08:11:49 # Node ID 3c6c21eb34161ee0c820b9c2323ef322fb0ede6f # Parent ec985dcfd7da64960c3a6908f948b1eef0c67175 inotify: inotify.server.walkrepodirs() simplify walking Do not 'yield tuple, boolean' to filter later on the boolean. Test the boolean first, and yield tuple only if needed. diff --git a/hgext/inotify/server.py b/hgext/inotify/server.py --- a/hgext/inotify/server.py +++ b/hgext/inotify/server.py @@ -32,6 +32,7 @@ def walkrepodirs(repo): '''Iterate over all subdirectories of this repo. Exclude the .hg directory, any nested repos, and ignored dirs.''' rootslash = repo.root + os.sep + def walkit(dirname, top): fullpath = rootslash + dirname hginside = False @@ -45,15 +46,15 @@ def walkrepodirs(repo): d = join(dirname, name) if repo.dirstate._ignore(d): continue - for subdir, hginsub in walkit(d, False): - if not hginsub: - yield subdir, False + for subdir in walkit(d, False): + yield subdir except OSError, err: if err.errno not in walk_ignored_errors: raise - yield fullpath, hginside - for dirname, hginside in walkit('', True): - yield dirname + if top or not hginside: + yield fullpath + + return walkit('', True) def walk(repo, root): '''Like os.walk, but only yields regular files.'''