From 84dadb0469a9adf3c72ea78424511b82dacd0f5e Mon Sep 17 00:00:00 2001 From: "Hussam.lawen" Date: Mon, 11 Mar 2024 09:42:10 +0200 Subject: [PATCH 1/4] rename + check github --- pr_agent/git_providers/github_provider.py | 12 ++++++------ pr_agent/tools/pr_reviewer.py | 8 ++++++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/pr_agent/git_providers/github_provider.py b/pr_agent/git_providers/github_provider.py index 92983baf..facf156a 100644 --- a/pr_agent/git_providers/github_provider.py +++ b/pr_agent/git_providers/github_provider.py @@ -38,7 +38,7 @@ class GithubProvider(GitProvider): self.set_pr(pr_url) self.pr_commits = list(self.pr.get_commits()) if self.incremental.is_incremental: - self.file_set = dict() + self.unreviewed_files_set = dict() self.get_incremental_commits() self.last_commit_id = self.pr_commits[-1] self.pr_url = self.get_pr_url() # pr_url for github actions can be as api.github.com, so we need to get the url from the pr object @@ -68,7 +68,7 @@ class GithubProvider(GitProvider): if commit.commit.message.startswith(f"Merge branch '{self._get_repo().default_branch}'"): get_logger().info(f"Skipping merge commit {commit.commit.message}") continue - self.file_set.update({file.filename: file for file in commit.files}) + self.unreviewed_files_set.update({file.filename: file for file in commit.files}) else: raise ValueError("No previous review found") @@ -99,8 +99,8 @@ class GithubProvider(GitProvider): return self.comments[index] def get_files(self): - if self.incremental.is_incremental and self.file_set: - return self.file_set.values() + if self.incremental.is_incremental and self.unreviewed_files_set: + return self.unreviewed_files_set.values() try: git_files = context.get("git_files", None) if git_files: @@ -146,10 +146,10 @@ class GithubProvider(GitProvider): new_file_content_str = self._get_pr_file_content(file, self.pr.head.sha) # communication with GitHub patch = file.patch - if self.incremental.is_incremental and self.file_set: + if self.incremental.is_incremental and self.unreviewed_files_set: original_file_content_str = self._get_pr_file_content(file, self.incremental.last_seen_commit_sha) patch = load_large_diff(file.filename, new_file_content_str, original_file_content_str) - self.file_set[file.filename] = patch + self.unreviewed_files_set[file.filename] = patch else: original_file_content_str = self._get_pr_file_content(file, self.pr.base.sha) if not patch: diff --git a/pr_agent/tools/pr_reviewer.py b/pr_agent/tools/pr_reviewer.py index 4a9d5ca1..b7f1f54e 100644 --- a/pr_agent/tools/pr_reviewer.py +++ b/pr_agent/tools/pr_reviewer.py @@ -108,14 +108,14 @@ class PRReviewer: 'config': dict(get_settings().config)} get_logger().debug("Relevant configs", artifacts=relevant_configs) - if self.incremental.is_incremental and hasattr(self.git_provider, "file_set") and not self.git_provider.file_set: + if self.incremental.is_incremental and hasattr(self.git_provider, "file_set") and not self.git_provider.unreviewed_files_set: get_logger().info(f"Incremental review is enabled for {self.pr_url} but there are no new files") previous_review_url = "" if hasattr(self.git_provider, "previous_review"): previous_review_url = self.git_provider.previous_review.html_url if get_settings().config.publish_output: self.git_provider.publish_comment(f"Incremental Review Skipped\n" - f"No files were changed since the [previous PR Review]({previous_review_url})", is_temporary=True) + f"No files were changed since the [previous PR Review]({previous_review_url})") return None if get_settings().config.publish_output: @@ -324,6 +324,10 @@ class PRReviewer: if self.is_auto and not self.incremental.first_new_commit_sha: get_logger().info(f"Incremental review is enabled for {self.pr_url} but there are no new commits") return False + + if not hasattr(self.git_provider, "get_incremental_commits"): + get_logger().info(f"Incremental review is not supported for {get_settings().config.git_provider}") + return False # checking if there are enough commits to start the review num_new_commits = len(self.incremental.commits_range) num_commits_threshold = get_settings().pr_reviewer.minimal_commits_for_incremental_review From 5c20fffee995aa0dbdd4ba1875e88b3966439e54 Mon Sep 17 00:00:00 2001 From: "Hussam.lawen" Date: Mon, 11 Mar 2024 09:59:16 +0200 Subject: [PATCH 2/4] fix when no previous review where found, reivew -i should run as regular review --- pr_agent/git_providers/github_provider.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pr_agent/git_providers/github_provider.py b/pr_agent/git_providers/github_provider.py index facf156a..2f928f82 100644 --- a/pr_agent/git_providers/github_provider.py +++ b/pr_agent/git_providers/github_provider.py @@ -70,7 +70,8 @@ class GithubProvider(GitProvider): continue self.unreviewed_files_set.update({file.filename: file for file in commit.files}) else: - raise ValueError("No previous review found") + get_logger().info("No previous review found, will review the entire PR") + self.incremental.is_incremental = False def get_commit_range(self): last_review_time = self.previous_review.created_at From ad240f764073c56300f59b5eab5c9e7824211776 Mon Sep 17 00:00:00 2001 From: "Hussam.lawen" Date: Mon, 11 Mar 2024 10:13:41 +0200 Subject: [PATCH 3/4] small fix --- pr_agent/tools/pr_reviewer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pr_agent/tools/pr_reviewer.py b/pr_agent/tools/pr_reviewer.py index b7f1f54e..59500005 100644 --- a/pr_agent/tools/pr_reviewer.py +++ b/pr_agent/tools/pr_reviewer.py @@ -115,7 +115,7 @@ class PRReviewer: previous_review_url = self.git_provider.previous_review.html_url if get_settings().config.publish_output: self.git_provider.publish_comment(f"Incremental Review Skipped\n" - f"No files were changed since the [previous PR Review]({previous_review_url})") + f"No files were changed since the [previous PR Review]({previous_review_url})") return None if get_settings().config.publish_output: From 476d64bc1863fcdb5e2399365a3477a45643c709 Mon Sep 17 00:00:00 2001 From: "Hussam.lawen" Date: Mon, 11 Mar 2024 11:30:05 +0200 Subject: [PATCH 4/4] fix --- pr_agent/tools/pr_reviewer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pr_agent/tools/pr_reviewer.py b/pr_agent/tools/pr_reviewer.py index 59500005..854e351c 100644 --- a/pr_agent/tools/pr_reviewer.py +++ b/pr_agent/tools/pr_reviewer.py @@ -108,7 +108,7 @@ class PRReviewer: 'config': dict(get_settings().config)} get_logger().debug("Relevant configs", artifacts=relevant_configs) - if self.incremental.is_incremental and hasattr(self.git_provider, "file_set") and not self.git_provider.unreviewed_files_set: + if self.incremental.is_incremental and hasattr(self.git_provider, "unreviewed_files_set") and not self.git_provider.unreviewed_files_set: get_logger().info(f"Incremental review is enabled for {self.pr_url} but there are no new files") previous_review_url = "" if hasattr(self.git_provider, "previous_review"):