Mercurial > hg
diff mercurial/sparse.py @ 33550:32f348d741e5
sparse: use set for capturing profiles
Order doesn't need to be preserved. A set is acceptable.
Differential Revision: https://phab.mercurial-scm.org/D95
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 15 Jul 2017 13:07:57 -0700 |
parents | 0407a51b9d8c |
children | 1d1779734c99 |
line wrap: on
line diff
--- a/mercurial/sparse.py Mon Jul 17 12:38:07 2017 -0400 +++ b/mercurial/sparse.py Sat Jul 15 13:07:57 2017 -0700 @@ -34,7 +34,7 @@ includes = set() excludes = set() current = includes - profiles = [] + profiles = set() for line in raw.split('\n'): line = line.strip() if not line or line.startswith('#'): @@ -43,7 +43,7 @@ elif line.startswith('%include '): line = line[9:].strip() if line: - profiles.append(line) + profiles.add(line) elif line == '[include]': if current != includes: # TODO pass filename into this API so we can report it. @@ -76,11 +76,11 @@ """ # Feature isn't enabled. No-op. if not enabled: - return set(), set(), [] + return set(), set(), set() raw = repo.vfs.tryread('sparse') if not raw: - return set(), set(), [] + return set(), set(), set() if rev is None: raise error.Abort(_('cannot parse sparse patterns from working ' @@ -115,8 +115,7 @@ pincludes, pexcludes, subprofs = parseconfig(repo.ui, raw) includes.update(pincludes) excludes.update(pexcludes) - for subprofile in subprofs: - profiles.append(subprofile) + profiles.update(subprofs) profiles = visited @@ -142,7 +141,7 @@ includes, excludes, profiles = patternsforrev(repo, rev) allincludes |= includes allexcludes |= excludes - allprofiles |= set(profiles) + allprofiles |= profiles return allincludes, allexcludes, allprofiles @@ -504,7 +503,7 @@ profiles = patternsforrev(repo, ctx.rev())[2] # profiles will only have data if sparse is enabled. - if set(profiles) & set(ctx.files()): + if profiles & set(ctx.files()): origstatus = repo.status() origsparsematch = matcher(repo) refreshwdir(repo, origstatus, origsparsematch, force=True) @@ -555,7 +554,7 @@ oldsize = len(includes) + len(excludes) + len(profiles) includes.update(iincludes - aincludes) excludes.update(iexcludes - aexcludes) - profiles.update(set(iprofiles) - aprofiles) + profiles.update(iprofiles - aprofiles) if len(includes) + len(excludes) + len(profiles) > oldsize: changed = True @@ -604,7 +603,6 @@ raw = repo.vfs.tryread('sparse') oldinclude, oldexclude, oldprofiles = parseconfig(repo.ui, raw) - oldprofiles = set(oldprofiles) if reset: newinclude = set()