##// END OF EJS Templates
store: make `walk` return an entry for phase if requested so...
marmoute -
r51405:a32d739b default
parent child Browse files
Show More
@@ -145,7 +145,7 b' def onetimesetup(ui):'
145 )
145 )
146
146
147 # don't clone filelogs to shallow clients
147 # don't clone filelogs to shallow clients
148 def _walkstreamfiles(orig, repo, matcher=None):
148 def _walkstreamfiles(orig, repo, matcher=None, phase=False):
149 if state.shallowremote:
149 if state.shallowremote:
150 # if we are shallow ourselves, stream our local commits
150 # if we are shallow ourselves, stream our local commits
151 if shallowutil.isenabled(repo):
151 if shallowutil.isenabled(repo):
@@ -200,7 +200,7 b' def onetimesetup(ui):'
200 _(b"Cannot clone from a shallow repo to a full repo.")
200 _(b"Cannot clone from a shallow repo to a full repo.")
201 )
201 )
202 else:
202 else:
203 for x in orig(repo, matcher):
203 for x in orig(repo, matcher, phase=phase):
204 yield x
204 yield x
205
205
206 extensions.wrapfunction(streamclone, b'_walkstreamfiles', _walkstreamfiles)
206 extensions.wrapfunction(streamclone, b'_walkstreamfiles', _walkstreamfiles)
@@ -685,7 +685,7 b' class basicstore:'
685 details=file_details,
685 details=file_details,
686 )
686 )
687
687
688 def top_entries(self) -> Generator[BaseStoreEntry, None, None]:
688 def top_entries(self, phase=False) -> Generator[BaseStoreEntry, None, None]:
689 files = reversed(self._walk(b'', False))
689 files = reversed(self._walk(b'', False))
690
690
691 changelogs = collections.defaultdict(dict)
691 changelogs = collections.defaultdict(dict)
@@ -725,11 +725,18 b' class basicstore:'
725 target_id=b'',
725 target_id=b'',
726 details=file_details,
726 details=file_details,
727 )
727 )
728 if phase and self.vfs.exists(b'phaseroots'):
729 yield SimpleStoreEntry(
730 entry_path=b'phaseroots',
731 is_volatile=True,
732 )
728
733
729 def walk(self, matcher=None) -> Generator[BaseStoreEntry, None, None]:
734 def walk(
735 self, matcher=None, phase=False
736 ) -> Generator[BaseStoreEntry, None, None]:
730 """return files related to data storage (ie: revlogs)
737 """return files related to data storage (ie: revlogs)
731
738
732 yields (file_type, unencoded, size)
739 yields instance from BaseStoreEntry subclasses
733
740
734 if a matcher is passed, storage files of only those tracked paths
741 if a matcher is passed, storage files of only those tracked paths
735 are passed with matches the matcher
742 are passed with matches the matcher
@@ -737,7 +744,7 b' class basicstore:'
737 # yield data files first
744 # yield data files first
738 for x in self.data_entries(matcher):
745 for x in self.data_entries(matcher):
739 yield x
746 yield x
740 for x in self.top_entries():
747 for x in self.top_entries(phase=phase):
741 yield x
748 yield x
742
749
743 def copylist(self):
750 def copylist(self):
@@ -241,8 +241,8 b' def allowservergeneration(repo):'
241
241
242
242
243 # This is it's own function so extensions can override it.
243 # This is it's own function so extensions can override it.
244 def _walkstreamfiles(repo, matcher=None):
244 def _walkstreamfiles(repo, matcher=None, phase=False):
245 return repo.store.walk(matcher)
245 return repo.store.walk(matcher, phase=phase)
246
246
247
247
248 def generatev1(repo):
248 def generatev1(repo):
@@ -679,7 +679,8 b' def _v2_walk(repo, includes, excludes, i'
679 if includes or excludes:
679 if includes or excludes:
680 matcher = narrowspec.match(repo.root, includes, excludes)
680 matcher = narrowspec.match(repo.root, includes, excludes)
681
681
682 for entry in _walkstreamfiles(repo, matcher):
682 phase = not repo.publishing()
683 for entry in _walkstreamfiles(repo, matcher, phase=phase):
683 for f in entry.files():
684 for f in entry.files():
684 file_size = f.file_size(repo.store.vfs)
685 file_size = f.file_size(repo.store.vfs)
685 if file_size:
686 if file_size:
@@ -688,10 +689,6 b' def _v2_walk(repo, includes, excludes, i'
688 ft = _filefull
689 ft = _filefull
689 entries.append((_srcstore, f.unencoded_path, ft, file_size))
690 entries.append((_srcstore, f.unencoded_path, ft, file_size))
690 totalfilesize += file_size
691 totalfilesize += file_size
691 for name in _walkstreamfullstorefiles(repo):
692 if repo.svfs.exists(name):
693 totalfilesize += repo.svfs.lstat(name).st_size
694 entries.append((_srcstore, name, _filefull, None))
695 if includeobsmarkers and repo.svfs.exists(b'obsstore'):
692 if includeobsmarkers and repo.svfs.exists(b'obsstore'):
696 totalfilesize += repo.svfs.lstat(b'obsstore').st_size
693 totalfilesize += repo.svfs.lstat(b'obsstore').st_size
697 entries.append((_srcstore, b'obsstore', _filefull, None))
694 entries.append((_srcstore, b'obsstore', _filefull, None))
General Comments 0
You need to be logged in to leave comments. Login now