@@ -510,14 +510,6 @@ def _wraprepo(ui, repo):
return result
- def writesparseconfig(self, include, exclude, profiles):
- raw = '%s[include]\n%s\n[exclude]\n%s\n' % (
- ''.join(['%%include %s\n' % p for p in sorted(profiles)]),
- '\n'.join(sorted(include)),
- '\n'.join(sorted(exclude)))
- self.vfs.write("sparse", raw)
- sparse.invalidatesignaturecache(self)
-
def addtemporaryincludes(self, files):
includes = self.gettemporaryincludes()
for file in files:
@@ -722,7 +714,8 @@ def _config(ui, repo, pats, opts, includ
newinclude.difference_update(pats)
newexclude.difference_update(pats)
- repo.writesparseconfig(newinclude, newexclude, newprofiles)
+ sparse.writeconfig(repo, newinclude, newexclude, newprofiles)
+
fcounts = map(
len, _refresh(ui, repo, oldstatus, oldsparsematch, force))
@@ -735,7 +728,7 @@ def _config(ui, repo, pats, opts, includ
_verbose_output(
ui, opts, profilecount, includecount, excludecount, *fcounts)
except Exception:
- repo.writesparseconfig(oldinclude, oldexclude, oldprofiles)
+ sparse.writeconfig(repo, oldinclude, oldexclude, oldprofiles)
raise
finally:
wlock.release()
@@ -784,13 +777,13 @@ def _import(ui, repo, files, opts, force
oldstatus = repo.status()
oldsparsematch = repo.sparsematch()
- repo.writesparseconfig(includes, excludes, profiles)
+ sparse.writeconfig(repo, includes, excludes, profiles)
try:
fcounts = map(
len, _refresh(ui, repo, oldstatus, oldsparsematch, force))
except Exception:
- repo.writesparseconfig(oincludes, oexcludes, oprofiles)
+ sparse.writeconfig(repo, oincludes, oexcludes, oprofiles)
raise
_verbose_output(ui, opts, profilecount, includecount, excludecount,
@@ -804,7 +797,7 @@ def _clear(ui, repo, files, force=False)
if includes or excludes:
oldstatus = repo.status()
oldsparsematch = repo.sparsematch()
- repo.writesparseconfig(set(), set(), profiles)
+ sparse.writeconfig(repo, set(), set(), profiles)
_refresh(ui, repo, oldstatus, oldsparsematch, force)
def _refresh(ui, repo, origstatus, origsparsematch, force):
@@ -129,3 +129,23 @@ def activeprofiles(repo):
def invalidatesignaturecache(repo):
repo._sparsesignaturecache.clear()
+
+def writeconfig(repo, includes, excludes, profiles):
+ """Write the sparse config file given a sparse configuration."""
+ with repo.vfs('sparse', 'wb') as fh:
+ for p in sorted(profiles):
+ fh.write('%%include %s\n' % p)
+
+ if includes:
+ fh.write('[include]\n')
+ for i in sorted(includes):
+ fh.write(i)
+ fh.write('\n')
+
+ if excludes:
+ fh.write('[exclude]\n')
+ for e in sorted(excludes):
+ fh.write(e)
+ fh.write('\n')
+
+ invalidatesignaturecache(repo)
@@ -63,8 +63,6 @@ Verify 'hg debugsparse' default output
$ hg debugsparse
[include]
show*
- [exclude]
-
Verify update only writes included files
@@ -150,8 +148,6 @@ Verify rebase temporarily includes exclu
[1]
$ hg debugsparse
- [include]
-
[exclude]
hide*
@@ -187,8 +183,6 @@ Verify merge fails if merging excluded f
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
$ hg debugsparse
- [include]
-
[exclude]
hide*
@@ -199,8 +193,6 @@ Verify merge fails if merging excluded f
cleaned up 1 temporarily added file(s) from the sparse checkout
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg debugsparse
- [include]
-
[exclude]
hide*
@@ -209,8 +201,6 @@ Verify strip -k resets dirstate correctl
$ hg status
$ hg debugsparse
- [include]
-
[exclude]
hide*
@@ -257,8 +247,6 @@ Test that add -s adds dirs to sparse pro
$ hg debugsparse
[include]
empty
- [exclude]
-
$ mkdir add
@@ -276,8 +264,6 @@ Test that add -s adds dirs to sparse pro
[include]
add
empty
- [exclude]
-
$ hg add -s add/*
add/foo already tracked!
@@ -288,8 +274,6 @@ Test that add -s adds dirs to sparse pro
[include]
add
empty
- [exclude]
-
$ cd ..