mercurial/store.py
changeset 50511 4cbdfab6f812
parent 50510 2b2284cf949b
child 50512 1c0244a8cdaf
--- a/mercurial/store.py	Mon May 15 08:57:45 2023 +0200
+++ b/mercurial/store.py	Mon May 15 08:58:01 2023 +0200
@@ -520,9 +520,17 @@
     """a file matching an entry"""
 
     unencoded_path = attr.ib()
-    file_size = attr.ib()
+    _file_size = attr.ib(default=False)
     is_volatile = attr.ib(default=False)
 
+    def file_size(self, vfs):
+        if self._file_size is not None:
+            return self._file_size
+        try:
+            return vfs.stat(self.unencoded_path).st_size
+        except FileNotFoundError:
+            return 0
+
 
 class basicstore:
     '''base class for local repository stores'''
@@ -900,16 +908,12 @@
                 # However the fncache might contains such file added by
                 # previous version of Mercurial.
                 continue
-            try:
-                yield RevlogStoreEntry(
-                    unencoded_path=f,
-                    revlog_type=FILEFLAGS_FILELOG,
-                    is_revlog_main=bool(t & FILEFLAGS_REVLOG_MAIN),
-                    is_volatile=bool(t & FILEFLAGS_VOLATILE),
-                    file_size=self.getsize(ef),
-                )
-            except FileNotFoundError:
-                pass
+            yield RevlogStoreEntry(
+                unencoded_path=f,
+                revlog_type=FILEFLAGS_FILELOG,
+                is_revlog_main=bool(t & FILEFLAGS_REVLOG_MAIN),
+                is_volatile=bool(t & FILEFLAGS_VOLATILE),
+            )
 
     def copylist(self):
         d = (