# HG changeset patch # User Gregory Szorc # Date 2017-07-08 20:19:38 # Node ID 4695f18290452f3c2f14a3a5ca68a50ad4812172 # Parent 160efb559f67e50e40e6431ef3b32d561f9737a0 sparse: move code for clearing rules to core This is a pretty straightforward port. 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)