narrow: copy store narrowspec to working copy immediately
We no longer need to delay it until the end of the transaction since
we now restore a backup if the transaction aborts.
Differential Revision: https://phab.mercurial-scm.org/D5506
--- a/hgext/narrow/narrowcommands.py Sat Dec 29 22:34:38 2018 -0800
+++ b/hgext/narrow/narrowcommands.py Sat Dec 29 23:01:12 2018 -0800
@@ -432,9 +432,9 @@
return 0
if update_working_copy:
- with repo.wlock(), repo.lock(), repo.transaction('narrow-wc') as tr:
+ with repo.wlock(), repo.lock(), repo.transaction('narrow-wc'):
narrowspec.updateworkingcopy(repo)
- narrowspec.copytoworkingcopy(repo, tr)
+ narrowspec.copytoworkingcopy(repo)
return 0
if not widening and not narrowing:
--- a/mercurial/hg.py Sat Dec 29 22:34:38 2018 -0800
+++ b/mercurial/hg.py Sat Dec 29 23:01:12 2018 -0800
@@ -334,7 +334,7 @@
destrepo.vfs.write('hgrc', util.tonativeeol(template % default))
if repositorymod.NARROW_REQUIREMENT in sourcerepo.requirements:
with destrepo.wlock():
- narrowspec.copytoworkingcopy(destrepo, None)
+ narrowspec.copytoworkingcopy(destrepo)
def _postshareupdate(repo, update, checkout=None):
"""Maybe perform a working directory update after a shared repo is created.
--- a/mercurial/localrepo.py Sat Dec 29 22:34:38 2018 -0800
+++ b/mercurial/localrepo.py Sat Dec 29 23:01:12 2018 -0800
@@ -1252,7 +1252,7 @@
def setnarrowpats(self, newincludes, newexcludes):
narrowspec.save(self, newincludes, newexcludes)
- narrowspec.copytoworkingcopy(self, self.currenttransaction())
+ narrowspec.copytoworkingcopy(self)
self.invalidate(clearfilecache=True)
# So the next access won't be considered a conflict
# TODO: It seems like there should be a way of doing this that
--- a/mercurial/narrowspec.py Sat Dec 29 22:34:38 2018 -0800
+++ b/mercurial/narrowspec.py Sat Dec 29 23:01:12 2018 -0800
@@ -161,17 +161,9 @@
spec = format(includepats, excludepats)
repo.svfs.write(FILENAME, spec)
-def copytoworkingcopy(repo, tr):
- if tr:
- def write(file):
- spec = repo.svfs.read(FILENAME)
- file.write(spec)
- file.close()
- tr.addfilegenerator('narrowspec', (DIRSTATE_FILENAME,), write,
- location='plain')
- else:
- spec = repo.svfs.read(FILENAME)
- repo.vfs.write(DIRSTATE_FILENAME, spec)
+def copytoworkingcopy(repo):
+ spec = repo.svfs.read(FILENAME)
+ repo.vfs.write(DIRSTATE_FILENAME, spec)
def savebackup(repo, backupname):
if repository.NARROW_REQUIREMENT not in repo.requirements: