Mercurial > hg
changeset 51488:94f821490645
branchcache: change the _delayed flag to an explicit `_dirty` flag
This is more consistent with the logic we use for other object and it open the way to a clearer management of the cache state.
Now, cache are created clean, cache update mark them dirty, writing them on
disk mark them clean again.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 08 Mar 2024 16:47:32 +0100 |
parents | 1a9bdd0e1c44 |
children | 659f766629c8 |
files | mercurial/branchmap.py mercurial/localrepo.py |
diffstat | 2 files changed, 8 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/branchmap.py Fri Mar 08 15:50:15 2024 +0100 +++ b/mercurial/branchmap.py Fri Mar 08 16:47:32 2024 +0100 @@ -74,7 +74,7 @@ disk. If a transaction is in progress, the writing is schedule to transaction - close. See the `BranchMapCache.write_delayed` method. + close. See the `BranchMapCache.write_dirty` method. This method exist independently of __getitem__ as it is sometime useful to signal that we have no intend to use the data in memory yet. @@ -164,13 +164,13 @@ def clear(self): self._per_filter.clear() - def write_delayed(self, repo): + def write_dirty(self, repo): unfi = repo.unfiltered() for filtername in repoviewutil.get_ordered_subset(): cache = self._per_filter.get(filtername) if cache is None: continue - if cache._delayed: + if cache._dirty: if filtername is None: repo = unfi else: @@ -433,13 +433,13 @@ has a given node or not. If it's not provided, we assume that every node we have exists in changelog""" self._filtername = repo.filtername - self._delayed = False if tipnode is None: self.tipnode = repo.nullid else: self.tipnode = tipnode self.tiprev = tiprev self.filteredhash = filteredhash + self._dirty = False super().__init__(repo=repo, entries=entries, closed_nodes=closednodes) # closednodes is a set of nodes that close their branch. If the branch @@ -568,7 +568,7 @@ ) # we copy will likely schedule a write anyway, but that does not seems # to hurt to overschedule - other._delayed = self._delayed + other._dirty = self._dirty # also copy information about the current verification state other._verifiedbranches = set(self._verifiedbranches) return other @@ -583,7 +583,6 @@ # Avoid premature writing. # # (The cache warming setup by localrepo will update the file later.) - self._delayed = True return try: filename = self._filename(repo) @@ -597,7 +596,7 @@ len(self._entries), nodecount, ) - self._delayed = False + self._dirty = False except (IOError, OSError, error.Abort) as inst: # Abort may be raised by read only opener, so log and continue repo.ui.debug( @@ -707,7 +706,7 @@ self.filteredhash = scmutil.filteredhash( repo, self.tiprev, needobsolete=True ) - + self._dirty = True self.write(repo)
--- a/mercurial/localrepo.py Fri Mar 08 15:50:15 2024 +0100 +++ b/mercurial/localrepo.py Fri Mar 08 16:47:32 2024 +0100 @@ -2974,7 +2974,7 @@ self._branchcaches.update_disk(filtered) # flush all possibly delayed write. - self._branchcaches.write_delayed(self) + self._branchcaches.write_dirty(self) def invalidatecaches(self): if '_tagscache' in vars(self):