From 5df4647bd0a62d318e2d42267e24a231ab91f662 Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Sun, 17 Jun 2018 12:55:27 +0200 Subject: [PATCH] shadow-repos: check if path to shadow repo existing before trying to call SCM object. - sometimes cleanups of shadow repos can occur. We should fail only if shadow repo path is there, and we can create a repo object from it. --- rhodecode/apps/repository/views/repo_pull_requests.py | 8 +++++--- rhodecode/model/db.py | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/rhodecode/apps/repository/views/repo_pull_requests.py b/rhodecode/apps/repository/views/repo_pull_requests.py index c1d044e0..969ec564 100644 --- a/rhodecode/apps/repository/views/repo_pull_requests.py +++ b/rhodecode/apps/repository/views/repo_pull_requests.py @@ -433,12 +433,14 @@ class RepoPullRequestsView(RepoAppView, DataGridAppView): source_scm = source_repo.scm_instance() target_scm = target_repo.scm_instance() - # try first shadow repo, fallback to regular repo + shadow_scm = None try: - commits_source_repo = pull_request_latest.get_shadow_repo() + shadow_scm = pull_request_latest.get_shadow_repo() except Exception: log.debug('Failed to get shadow repo', exc_info=True) - commits_source_repo = source_scm + # try first the existing source_repo, and then shadow + # repo if we can obtain one + commits_source_repo = source_scm or shadow_scm c.commits_source_repo = commits_source_repo c.ancestor = None # set it to None, to hide it from PR view diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py index 01f8e9cf..f1e36d57 100644 --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -3763,7 +3763,8 @@ class PullRequest(Base, _PullRequestBase): 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) + if os.path.isdir(shadow_repository_path): + return vcs_obj._get_shadow_instance(shadow_repository_path) class PullRequestVersion(Base, _PullRequestBase):