Show More
@@ -10,7 +10,7 b' import functools' | |||
|
10 | 10 | import os |
|
11 | 11 | import re |
|
12 | 12 | import stat |
|
13 | from typing import Generator | |
|
13 | from typing import Generator, List | |
|
14 | 14 | |
|
15 | 15 | from .i18n import _ |
|
16 | 16 | from .pycompat import getattr |
@@ -459,12 +459,32 b' FILETYPE_FILELOG_OTHER = FILEFLAGS_FILEL' | |||
|
459 | 459 | FILETYPE_OTHER = FILEFLAGS_OTHER |
|
460 | 460 | |
|
461 | 461 | |
|
462 | @attr.s(slots=True) | |
|
463 | class StoreFile: | |
|
464 | """a file matching a store entry""" | |
|
465 | ||
|
466 | unencoded_path = attr.ib() | |
|
467 | _file_size = attr.ib(default=None) | |
|
468 | is_volatile = attr.ib(default=False) | |
|
469 | ||
|
470 | def file_size(self, vfs): | |
|
471 | if self._file_size is None: | |
|
472 | try: | |
|
473 | self._file_size = vfs.stat(self.unencoded_path).st_size | |
|
474 | except FileNotFoundError: | |
|
475 | self._file_size = 0 | |
|
476 | return self._file_size | |
|
477 | ||
|
478 | ||
|
462 | 479 | @attr.s(slots=True, init=False) |
|
463 | 480 | class BaseStoreEntry: |
|
464 | 481 | """An entry in the store |
|
465 | 482 | |
|
466 | 483 | This is returned by `store.walk` and represent some data in the store.""" |
|
467 | 484 | |
|
485 | def files(self) -> List[StoreFile]: | |
|
486 | raise NotImplementedError | |
|
487 | ||
|
468 | 488 | |
|
469 | 489 | @attr.s(slots=True, init=False) |
|
470 | 490 | class SimpleStoreEntry(BaseStoreEntry): |
@@ -489,7 +509,7 b' class SimpleStoreEntry(BaseStoreEntry):' | |||
|
489 | 509 | self._file_size = file_size |
|
490 | 510 | self._files = None |
|
491 | 511 | |
|
492 | def files(self): | |
|
512 | def files(self) -> List[StoreFile]: | |
|
493 | 513 | if self._files is None: |
|
494 | 514 | self._files = [ |
|
495 | 515 | StoreFile( |
@@ -544,7 +564,7 b' class RevlogStoreEntry(BaseStoreEntry):' | |||
|
544 | 564 | """unencoded path of the main revlog file""" |
|
545 | 565 | return self._path_prefix + b'.i' |
|
546 | 566 | |
|
547 | def files(self): | |
|
567 | def files(self) -> List[StoreFile]: | |
|
548 | 568 | if self._files is None: |
|
549 | 569 | self._files = [] |
|
550 | 570 | for ext in sorted(self._details, key=_ext_key): |
@@ -569,23 +589,6 b' class RevlogStoreEntry(BaseStoreEntry):' | |||
|
569 | 589 | return filelog.filelog(repo.svfs, self.target_id) |
|
570 | 590 | |
|
571 | 591 | |
|
572 | @attr.s(slots=True) | |
|
573 | class StoreFile: | |
|
574 | """a file matching an entry""" | |
|
575 | ||
|
576 | unencoded_path = attr.ib() | |
|
577 | _file_size = attr.ib(default=None) | |
|
578 | is_volatile = attr.ib(default=False) | |
|
579 | ||
|
580 | def file_size(self, vfs): | |
|
581 | if self._file_size is None: | |
|
582 | try: | |
|
583 | self._file_size = vfs.stat(self.unencoded_path).st_size | |
|
584 | except FileNotFoundError: | |
|
585 | self._file_size = 0 | |
|
586 | return self._file_size | |
|
587 | ||
|
588 | ||
|
589 | 592 | def _gather_revlog(files_data): |
|
590 | 593 | """group files per revlog prefix |
|
591 | 594 |
General Comments 0
You need to be logged in to leave comments.
Login now