stream: open volatile file through the manager
To do more subtle things, we need more control.
--- 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():