changeset 47605:a5701ffc10e4

sparse: make sure we adjust the dirstate at the same time as the parent This is more correct and help our API split. Differential Revision: https://phab.mercurial-scm.org/D11028
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 08 Jul 2021 18:59:55 +0200
parents 090fc6a95e50
children 26bf0b9fe78f
files mercurial/context.py mercurial/sparse.py
diffstat 2 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/context.py	Thu Jul 08 18:51:45 2021 +0200
+++ b/mercurial/context.py	Thu Jul 08 18:59:55 2021 +0200
@@ -2022,13 +2022,13 @@
             self._repo.dirstate.setparents(node)
             self._repo._quick_access_changeid_invalidate()
 
+            sparse.aftercommit(self._repo, node)
+
         # write changes out explicitly, because nesting wlock at
         # runtime may prevent 'wlock.release()' in 'repo.commit()'
         # from immediately doing so for subsequent changing files
         self._repo.dirstate.write(self._repo.currenttransaction())
 
-        sparse.aftercommit(self._repo, node)
-
     def mergestate(self, clean=False):
         if clean:
             return mergestatemod.mergestate.clean(self._repo)
--- a/mercurial/sparse.py	Thu Jul 08 18:51:45 2021 +0200
+++ b/mercurial/sparse.py	Thu Jul 08 18:59:55 2021 +0200
@@ -646,7 +646,7 @@
     The updated sparse config is written out and the working directory
     is refreshed, as needed.
     """
-    with repo.wlock():
+    with repo.wlock(), repo.dirstate.parentchange():
         # read current configuration
         raw = repo.vfs.tryread(b'sparse')
         includes, excludes, profiles = parseconfig(repo.ui, raw, b'sparse')