From cf14e456748a829c17f1b228c13666686fdaa046 Mon Sep 17 00:00:00 2001 From: mhoecke1 Date: Fri, 30 Aug 2024 10:10:39 -0400 Subject: [PATCH] further cleaned up code based on feedback --- .../bitbucket_server_provider.py | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/pr_agent/git_providers/bitbucket_server_provider.py b/pr_agent/git_providers/bitbucket_server_provider.py index 33b840c7..7588075e 100644 --- a/pr_agent/git_providers/bitbucket_server_provider.py +++ b/pr_agent/git_providers/bitbucket_server_provider.py @@ -156,33 +156,33 @@ class BitbucketServerProvider(GitProvider): if self.diff_files: return self.diff_files - source_commits_list = list(self.bitbucket_client.get_pull_requests_commits( - self.workspace_slug, - self.repo_slug, - self.pr_num - )) + head_sha = self.pr.fromRef['latestCommit'] - # defaults to basic diff functionality with a guaranteed common ancestor - base_sha, head_sha = source_commits_list[-1]['parents'][0]['id'], source_commits_list[0]['id'] - - # if Bitbucket api version is greater than or equal to 7.0 then use 2-way diff functionality for the base_sha - if self.bitbucket_api_version is not None and self.bitbucket_api_version >= LooseVersion("7.0"): - # Bitbucket endpoint for getting merge-base is available as of 8.16 - if self.bitbucket_api_version >= LooseVersion("8.16"): - try: - base_sha = self.bitbucket_client.get(self._get_best_common_ancestor())['id'] - except Exception as e: - get_logger().error(f"Failed to get the best common ancestor for PR: {self.pr_url}, \nerror: {e}") - raise e - # for versions 7.0-8.15 try to calculate the merge-base on our own - else: + # if Bitbucket api version is >= 8.16 then use the merge-base api for 2-way diff calculation + if self.bitbucket_api_version is not None and self.bitbucket_api_version >= LooseVersion("8.16"): + try: + base_sha = self.bitbucket_client.get(self._get_merge_base())['id'] + except Exception as e: + get_logger().error(f"Failed to get the best common ancestor for PR: {self.pr_url}, \nerror: {e}") + raise e + else: + source_commits_list = list(self.bitbucket_client.get_pull_requests_commits( + self.workspace_slug, + self.repo_slug, + self.pr_num + )) + # if Bitbucket api version is None or < 7.0 then do a simple diff with a guaranteed common ancestor + base_sha = source_commits_list[-1]['parents'][0]['id'] + # if Bitbucket api version is 7.0-8.15 then use 2-way diff functionality for the base_sha + if self.bitbucket_api_version is not None and self.bitbucket_api_version >= LooseVersion("7.0"): try: destination_commits = list( self.bitbucket_client.get_commits(self.workspace_slug, self.repo_slug, base_sha, self.pr.toRef['latestCommit'])) base_sha = self.get_best_common_ancestor(source_commits_list, destination_commits, base_sha) except Exception as e: - get_logger().error(f"Failed to get the commit list for calculating best common ancestor for PR: {self.pr_url}, \nerror: {e}") + get_logger().error( + f"Failed to get the commit list for calculating best common ancestor for PR: {self.pr_url}, \nerror: {e}") raise e diff_files = [] @@ -452,5 +452,5 @@ class BitbucketServerProvider(GitProvider): def _get_pr_comments_path(self): return f"rest/api/latest/projects/{self.workspace_slug}/repos/{self.repo_slug}/pull-requests/{self.pr_num}/comments" - def _get_best_common_ancestor(self): + def _get_merge_base(self): return f"rest/api/latest/projects/{self.workspace_slug}/repos/{self.repo_slug}/pull-requests/{self.pr_num}/merge-base"