Patchwork [02,of,11,sparse] sparse: move code for clearing rules to core

login
register
mail settings
Submitter Gregory Szorc
Date July 8, 2017, 11:28 p.m.
Message ID <b54b5a5d05a19ad9d2b4.1499556537@ubuntu-vm-main>
Download mbox | patch
Permalink /patch/22126/
State Accepted
Headers show

Comments

Gregory Szorc - July 8, 2017, 11:28 p.m.
# HG changeset patch
# User Gregory Szorc <gregory.szorc@gmail.com>
# Date 1499545178 25200
#      Sat Jul 08 13:19:38 2017 -0700
# Node ID b54b5a5d05a19ad9d2b4b52f72a87fc4706cba3e
# Parent  05fba83e64406ea5051763c4c14c4067b2b72254
sparse: move code for clearing rules to core

This is a pretty straightforward port.

Patch

diff --git a/hgext/sparse.py b/hgext/sparse.py
--- a/hgext/sparse.py
+++ b/hgext/sparse.py
@@ -365,7 +365,7 @@  def debugsparse(ui, repo, *pats, **opts)
         _import(ui, repo, pats, opts, force=force)
 
     if clearrules:
-        _clear(ui, repo, pats, force=force)
+        sparse.clearrules(repo, force=force)
 
     if refresh:
         try:
@@ -503,17 +503,6 @@  def _import(ui, repo, files, opts, force
         _verbose_output(ui, opts, profilecount, includecount, excludecount,
                         *fcounts)
 
-def _clear(ui, repo, files, force=False):
-    with repo.wlock():
-        raw = repo.vfs.tryread('sparse')
-        includes, excludes, profiles = sparse.parseconfig(ui, raw)
-
-        if includes or excludes:
-            oldstatus = repo.status()
-            oldsparsematch = sparse.matcher(repo)
-            sparse.writeconfig(repo, set(), set(), profiles)
-            sparse.refreshwdir(repo, oldstatus, oldsparsematch, force)
-
 def _verbose_output(ui, opts, profilecount, includecount, excludecount, added,
                     dropped, lookup):
     """Produce --verbose and templatable output
diff --git a/mercurial/sparse.py b/mercurial/sparse.py
--- a/mercurial/sparse.py
+++ b/mercurial/sparse.py
@@ -494,3 +494,21 @@  def aftercommit(repo, node):
         refreshwdir(repo, origstatus, origsparsematch, force=True)
 
     prunetemporaryincludes(repo)
+
+def clearrules(repo, force=False):
+    """Clears include/exclude rules from the sparse config.
+
+    The remaining sparse config only has profiles, if defined. The working
+    directory is refreshed, as needed.
+    """
+    with repo.wlock():
+        raw = repo.vfs.tryread('sparse')
+        includes, excludes, profiles = parseconfig(repo.ui, raw)
+
+        if not includes and not excludes:
+            return
+
+        oldstatus = repo.status()
+        oldmatch = matcher(repo)
+        writeconfig(repo, set(), set(), profiles)
+        refreshwdir(repo, oldstatus, oldmatch, force=force)