changeset 52044:0ad269e24075

stream: open volatile file through the manager To do more subtle things, we need more control.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 01 Oct 2024 15:55:29 +0200
parents e308439339e2
children 4801fde72cc2
files mercurial/store.py mercurial/streamclone.py
diffstat 2 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/store.py	Mon Oct 14 15:11:49 2024 +0200
+++ b/mercurial/store.py	Tue Oct 01 15:55:29 2024 +0200
@@ -485,8 +485,8 @@
         size = self.file_size(None)
 
         def get_stream():
-            actual_path = volatiles[vfs.join(self.unencoded_path)]
-            with open(actual_path, 'rb') as fp:
+            path = vfs.join(self.unencoded_path)
+            with volatiles.open(path) as fp:
                 yield None  # ready to stream
                 if size <= 65536:
                     yield fp.read(size)
--- a/mercurial/streamclone.py	Mon Oct 14 15:11:49 2024 +0200
+++ b/mercurial/streamclone.py	Tue Oct 01 15:55:29 2024 +0200
@@ -608,6 +608,12 @@
         unmodified."""
         return self._copies.get(src, src)
 
+    @contextlib.contextmanager
+    def open(self, src):
+        actual_path = self._copies.get(src, src)
+        with open(actual_path, 'rb') as fp:
+            yield fp
+
     def __exit__(self, *args, **kwars):
         """discard all backups"""
         for tmp in self._copies.values():