# HG changeset patch # User Serhii Ilin # Date 2024-01-08 12:22:04 # Node ID 6b054b387652f358c0321e9bf701675149a4d15a # Parent 8cf3d30afabdc7625e83f1f9896a3a6fae0c340c fix(LFS): fixed pull_changes method to support a new (sync_large_objects) flag, updated all parts that will use a new flag. Fixes: RCCE-8 diff --git a/rhodecode/api/views/repo_api.py b/rhodecode/api/views/repo_api.py --- a/rhodecode/api/views/repo_api.py +++ b/rhodecode/api/views/repo_api.py @@ -2227,7 +2227,7 @@ def revoke_user_group_permission(request @jsonrpc_method() -def pull(request, apiuser, repoid, remote_uri=Optional(None)): +def pull(request, apiuser, repoid, remote_uri=Optional(None), sync_large_objects=Optional(False)): """ Triggers a pull on the given repository from a remote location. You can use this to keep remote repositories up-to-date. @@ -2244,6 +2244,8 @@ def pull(request, apiuser, repoid, remot :type repoid: str or int :param remote_uri: Optional remote URI to pass in for pull :type remote_uri: str + :param sync_large_objects: Optional flag for pulling LFS objects. + :type sync_large_objects: bool Example output: @@ -2277,7 +2279,7 @@ def pull(request, apiuser, repoid, remot try: ScmModel().pull_changes( - repo.repo_name, apiuser.username, remote_uri=remote_uri) + repo.repo_name, apiuser.username, remote_uri=remote_uri, sync_large_objects=sync_large_objects) return { 'msg': 'Pulled from url `{}` on repo `{}`'.format( remote_uri_display, repo.repo_name), diff --git a/rhodecode/apps/repository/views/repo_settings_remote.py b/rhodecode/apps/repository/views/repo_settings_remote.py --- a/rhodecode/apps/repository/views/repo_settings_remote.py +++ b/rhodecode/apps/repository/views/repo_settings_remote.py @@ -52,7 +52,7 @@ class RepoSettingsRemoteView(RepoAppView try: ScmModel().pull_changes( - self.db_repo_name, self._rhodecode_user.username) + self.db_repo_name, self._rhodecode_user.username, sync_large_objects=True) h.flash(_('Pulled from remote location'), category='success') except Exception: log.exception("Exception during pull from remote") diff --git a/rhodecode/lib/vcs/backends/git/repository.py b/rhodecode/lib/vcs/backends/git/repository.py --- a/rhodecode/lib/vcs/backends/git/repository.py +++ b/rhodecode/lib/vcs/backends/git/repository.py @@ -669,11 +669,11 @@ class GitRepository(BaseRepository): self._remote.pull(url, refs=refs, update_after=update_after) self._remote.invalidate_vcs_cache() - def fetch(self, url, commit_ids=None): + def fetch(self, url, commit_ids=None, **kwargs): """ Fetch all git objects from external location. """ - self._remote.sync_fetch(url, refs=commit_ids) + self._remote.sync_fetch(url, refs=commit_ids, **kwargs) self._remote.invalidate_vcs_cache() def push(self, url): diff --git a/rhodecode/lib/vcs/backends/hg/repository.py b/rhodecode/lib/vcs/backends/hg/repository.py --- a/rhodecode/lib/vcs/backends/hg/repository.py +++ b/rhodecode/lib/vcs/backends/hg/repository.py @@ -577,7 +577,7 @@ class MercurialRepository(BaseRepository self._remote.pull(url, commit_ids=commit_ids) self._remote.invalidate_vcs_cache() - def fetch(self, url, commit_ids=None): + def fetch(self, url, commit_ids=None, **kwargs): """ Backward compatibility with GIT fetch==pull """ diff --git a/rhodecode/model/scm.py b/rhodecode/model/scm.py --- a/rhodecode/model/scm.py +++ b/rhodecode/model/scm.py @@ -387,7 +387,7 @@ class ScmModel(BaseModel): self.sa.add(repo) return repo - def pull_changes(self, repo, username, remote_uri=None, validate_uri=True): + def pull_changes(self, repo, username, remote_uri=None, validate_uri=True, **kwargs): dbrepo = self._get_repo(repo) remote_uri = remote_uri or dbrepo.clone_uri if not remote_uri: @@ -409,7 +409,7 @@ class ScmModel(BaseModel): repo_name = dbrepo.repo_name try: # TODO: we need to make sure those operations call proper hooks ! - repo.fetch(remote_uri) + repo.fetch(remote_uri, **kwargs) self.mark_for_invalidation(repo_name) except Exception: