changeset 50185:99296ca9f29e

narrow: get the narrow patterns from the repository object instead of disk Relying on disk data make the transactionally of this change complicated, so let us start reading data from other API instead.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 23 Feb 2023 04:02:38 +0100
parents a6ca61fd1fa8
children 8bc14ac53a41
files mercurial/narrowspec.py
diffstat 1 files changed, 4 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/narrowspec.py	Thu Feb 23 00:12:53 2023 +0100
+++ b/mercurial/narrowspec.py	Thu Feb 23 04:02:38 2023 +0100
@@ -181,7 +181,7 @@
 
 
 def copytoworkingcopy(repo):
-    spec = repo.svfs.read(FILENAME)
+    spec = format(*repo.narrowpats)
     repo.vfs.write(DIRSTATE_FILENAME, spec)
 
 
@@ -296,8 +296,9 @@
     # Avoid infinite recursion when updating the working copy
     if getattr(repo, '_updatingnarrowspec', False):
         return
-    storespec = repo.svfs.tryread(FILENAME)
+    storespec = repo.narrowpats
     wcspec = repo.vfs.tryread(DIRSTATE_FILENAME)
+    wcspec = parseconfig(repo.ui, wcspec)
     if wcspec != storespec:
         raise error.StateError(
             _(b"working copy's narrowspec is stale"),
@@ -312,11 +313,10 @@
     be deleted. It is then up to the caller to make sure they are clean.
     """
     oldspec = repo.vfs.tryread(DIRSTATE_FILENAME)
-    newspec = repo.svfs.tryread(FILENAME)
+    newincludes, newexcludes = repo.narrowpats
     repo._updatingnarrowspec = True
 
     oldincludes, oldexcludes = parseconfig(repo.ui, oldspec)
-    newincludes, newexcludes = parseconfig(repo.ui, newspec)
     oldmatch = match(repo.root, include=oldincludes, exclude=oldexcludes)
     newmatch = match(repo.root, include=newincludes, exclude=newexcludes)
     addedmatch = matchmod.differencematcher(newmatch, oldmatch)