# HG changeset patch # User Pierre-Yves David # Date 1678105841 -3600 # Node ID f34887316f1ff4ddf3be358cecd897b902d82264 # Parent 5e568d70f54ddb88b7e62eed59965ad3848a00c5 undo-files: factor the vfs map in a repository property We define it in multiple locations and inconsistencies are appearing. So we now have a single definition point. diff -r 5e568d70f54d -r f34887316f1f mercurial/interfaces/repository.py --- a/mercurial/interfaces/repository.py Mon Mar 06 13:22:47 2023 +0100 +++ b/mercurial/interfaces/repository.py Mon Mar 06 13:30:41 2023 +0100 @@ -1524,6 +1524,10 @@ """Name of the repoview that is active on this repo.""" ) + vfs_map = interfaceutil.Attribute( + """a bytes-key → vfs mapping used by transaction and others""" + ) + wvfs = interfaceutil.Attribute( """VFS used to access the working directory.""" ) diff -r 5e568d70f54d -r f34887316f1f mercurial/localrepo.py --- a/mercurial/localrepo.py Mon Mar 06 13:22:47 2023 +0100 +++ b/mercurial/localrepo.py Mon Mar 06 13:30:41 2023 +0100 @@ -1565,6 +1565,14 @@ return checksvfs + @property + def vfs_map(self): + return { + b'': self.svfs, + b'plain': self.vfs, + b'store': self.svfs, + } + def close(self): self._writecaches() @@ -2415,7 +2423,7 @@ rp = report else: rp = self.ui.warn - vfsmap = {b'plain': self.vfs, b'store': self.svfs} # root of .hg/ + vfsmap = self.vfs_map # we must avoid cyclic reference between repo and transaction. reporef = weakref.ref(self) # Code to track tag movement @@ -2704,10 +2712,7 @@ with self.lock(): if self.svfs.exists(b"journal"): self.ui.status(_(b"rolling back interrupted transaction\n")) - vfsmap = { - b'': self.svfs, - b'plain': self.vfs, - } + vfsmap = self.vfs_map transaction.rollback( self.svfs, vfsmap, @@ -2775,7 +2780,7 @@ return 0 self.destroying() - vfsmap = {b'plain': self.vfs, b'': self.svfs} + vfsmap = self.vfs_map skip_journal_pattern = None if not parentgone: skip_journal_pattern = RE_SKIP_DIRSTATE_ROLLBACK