# HG changeset patch # User Matt Mackall # Date 1243810458 18000 # Node ID 99eb4dcb37ce9a4c3d7cdb6c7b5f10e6348f1282 # Parent cc7da5aae4cd5fa484aa5c57050bef7de1fb34e1 walk: refactor walk plan - never is gone - reorder tests more cleanly - rename nomatches to exact for clearer semantics diff -r cc7da5aae4cd -r 99eb4dcb37ce mercurial/dirstate.py --- a/mercurial/dirstate.py Sun May 31 17:54:18 2009 -0500 +++ b/mercurial/dirstate.py Sun May 31 17:54:18 2009 -0500 @@ -460,21 +460,20 @@ work = [] wadd = work.append - if match.anypats(): - #match.match with patterns + if match.anypats(): # match.match or .exact with patterns dostep3 = True - nomatches = False - elif not match.files(): - #match.always or match.never - dostep3 = matchfn('') - nomatches = not dostep3 - else: - #match.exact or match.match without pattern + exact = False + elif matchfn == match.exact: # match.exact without patterns + dostep3 = False + exact = True + elif match.files(): # match.match without patterns dostep3 = False - nomatches = matchfn == match.exact + exact = False + else: # match.always + dostep3 = True + exact = False - if nomatches: - #skip step 2 + if exact: # skip step 2 dirignore = util.always files = set(match.files()) @@ -551,7 +550,7 @@ results[nf] = None # step 3: report unseen items in the dmap hash - if dostep3 and not nomatches: + if dostep3 and not exact: visit = sorted([f for f in dmap if f not in results and matchfn(f)]) for nf, st in zip(visit, util.statfiles([join(i) for i in visit])): if not st is None and not getkind(st.st_mode) in (regkind, lnkkind):