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.
This commit is contained in:
Nicolas Dumazet 2009-05-04 17:11:49 +09:00
parent 1ecc45315c
commit eba4602603

View File

@ -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.'''