# HG changeset patch # User Marcin Kuzminski # Date 2017-01-23 21:53:53 # Node ID c1fd39164743295c5b6ef6aad3902517c4b0a57c # Parent da1547bc9ffdfb8f20fff6efad721cb2349e8623 vcs-core: add a shadow-repo extractor for pull-requests, and git objects. 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 @@ -747,6 +747,9 @@ class GitRepository(BaseRepository): return heads + def _get_shadow_instance(self, shadow_repository_path, enable_hooks=False): + return GitRepository(shadow_repository_path) + def _local_pull(self, repository_path, branch_name): """ Pull a branch from a local repository. diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -3328,6 +3328,18 @@ class PullRequest(Base, _PullRequestBase from rhodecode.model.changeset_status import ChangesetStatusModel return ChangesetStatusModel().reviewers_statuses(self) + @property + def workspace_id(self): + from rhodecode.model.pull_request import PullRequestModel + return PullRequestModel()._workspace_id(self) + + def get_shadow_repo(self): + workspace_id = self.workspace_id + vcs_obj = self.target_repo.scm_instance() + shadow_repository_path = vcs_obj._get_shadow_repository_path( + workspace_id) + return vcs_obj._get_shadow_instance(shadow_repository_path) + class PullRequestVersion(Base, _PullRequestBase): __tablename__ = 'pull_request_versions'