[Differential] [Request, 18 lines] D95: sparse: use set for capturing profiles

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Sat Jul 15 21:12:02 UTC 2017


indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  Order doesn't need to be preserved. A set is acceptable.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D95

AFFECTED FILES
  mercurial/sparse.py

CHANGE DETAILS

Index: mercurial/sparse.py
===================================================================
--- mercurial/sparse.py
+++ mercurial/sparse.py
@@ -34,16 +34,16 @@
     includes = set()
     excludes = set()
     current = includes
-    profiles = []
+    profiles = set()
     for line in raw.split('\n'):
         line = line.strip()
         if not line or line.startswith('#'):
             # empty or comment line, skip
             continue
         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()


EMAIL PREFERENCES
  https://phab.mercurial-scm.org/settings/panel/emailpreferences/

To: indygreg, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list