files: only check for git_lfs/hg_largefiles if they are enabled.

- this speeds up fetching of files if they are not LF and very big.
This commit is contained in:
Marcin Kuzminski 2019-08-23 14:37:56 +02:00
parent 9a3fa67ca9
commit 0ae89b9907
4 changed files with 33 additions and 3 deletions

View file

@ -305,6 +305,11 @@ class RepoAppView(BaseAppView):
settings = settings_model.get_general_settings()
return settings.get(settings_key, default)
def _get_repo_setting(self, target_repo, settings_key, default=False):
settings_model = VcsSettingsModel(repo=target_repo)
settings = settings_model.get_repo_settings_inherited()
return settings.get(settings_key, default)
def get_recache_flag(self):
for flag_name in ['force_recache', 'force-recache', 'no-cache']:
flag_val = self.request.GET.get(flag_name)

View file

@ -305,6 +305,21 @@ class RepoFilesView(RepoAppView):
pure_path = pathlib2.PurePath(*sanitized_path)
return pure_path
def _is_lf_enabled(self, target_repo):
lf_enabled = False
lf_key_for_vcs_map = {
'hg': 'extensions_largefiles',
'git': 'vcs_git_lfs_enabled'
}
lf_key_for_vcs = lf_key_for_vcs_map.get(target_repo.repo_type)
if lf_key_for_vcs:
lf_enabled = self._get_repo_setting(target_repo, lf_key_for_vcs)
return lf_enabled
@LoginRequired()
@HasRepoPermissionAnyDecorator(
'repository.read', 'repository.write', 'repository.admin')
@ -645,7 +660,11 @@ class RepoFilesView(RepoAppView):
# load file content
if c.file.is_file():
c.lf_node = c.file.get_largefile_node()
c.lf_node = {}
has_lf_enabled = self._is_lf_enabled(self.db_repo)
if has_lf_enabled:
c.lf_node = c.file.get_largefile_node()
c.file_source_page = 'true'
c.file_last_commit = c.file.last_commit

View file

@ -330,8 +330,8 @@ class MercurialCommit(base.BaseCommit):
return self.nodes[path]
def get_largefile_node(self, path):
if self._remote.is_large_file(path):
pointer_spec = self._remote.is_large_file(path)
if pointer_spec:
# content of that file regular FileNode is the hash of largefile
file_id = self.get_file_content(path).strip()

View file

@ -520,6 +520,12 @@ class VcsSettingsModel(object):
def get_repo_settings(self):
return self._collect_all_settings(global_=False)
@assert_repo_settings
def get_repo_settings_inherited(self):
global_settings = self.get_global_settings()
global_settings.update(self.get_repo_settings())
return global_settings
@assert_repo_settings
def create_or_update_repo_settings(
self, data, inherit_global_settings=False):