Mercurial > hg
diff hgext/largefiles/overrides.py @ 50142:308aff0243ae
large-files: also open the context in the subdirstate
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 20 Feb 2023 17:16:52 +0100 |
parents | 42288fa03322 |
children | bf92386f76fd |
line wrap: on
line diff
--- a/hgext/largefiles/overrides.py Wed Feb 22 00:23:06 2023 +0100 +++ b/hgext/largefiles/overrides.py Mon Feb 20 17:16:52 2023 +0100 @@ -334,6 +334,27 @@ self._sub_dirstate = pre +@eh.wrapfunction(dirstate.dirstate, b'running_status') +@contextlib.contextmanager +def running_status(orig, self, repo): + pre = sub_dirstate = getattr(self, '_sub_dirstate', None) + try: + lfd = getattr(self, '_large_file_dirstate', False) + if sub_dirstate is None and not lfd: + sub_dirstate = lfutil.openlfdirstate(repo.ui, repo) + self._sub_dirstate = sub_dirstate + if not lfd: + assert self._sub_dirstate is not None + with orig(self, repo): + if sub_dirstate is None: + yield + else: + with sub_dirstate.running_status(repo): + yield + finally: + self._sub_dirstate = pre + + @eh.wrapfunction(subrepo.hgsubrepo, b'status') def overridestatusfn(orig, repo, rev2, **opts): with lfstatus(repo._repo):