From c924affebc3e85e15d64dcd47c8c1591ff7f9ec1 Mon Sep 17 00:00:00 2001 From: Thomas De Keulenaer <11250711+twdkeule@users.noreply.github.com> Date: Wed, 7 May 2025 14:46:08 +0200 Subject: [PATCH] Azure devops provider: add persistent comment --- .../git_providers/azuredevops_provider.py | 22 ++++++++++++++----- pr_agent/tools/pr_code_suggestions.py | 8 ------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/pr_agent/git_providers/azuredevops_provider.py b/pr_agent/git_providers/azuredevops_provider.py index 7524896c..4dd61e5b 100644 --- a/pr_agent/git_providers/azuredevops_provider.py +++ b/pr_agent/git_providers/azuredevops_provider.py @@ -170,10 +170,6 @@ class AzureDevopsProvider(GitProvider): return [] def is_supported(self, capability: str) -> bool: - if capability in [ - "get_issue_comments", - ]: - return False return True def set_pr(self, pr_url: str): @@ -390,6 +386,13 @@ class AzureDevopsProvider(GitProvider): self.temp_comments.append(created_comment) return created_comment + def publish_persistent_comment(self, pr_comment: str, + initial_header: str, + update_header: bool = True, + name='review', + final_update_message=True): + return self.publish_persistent_comment_full(pr_comment, initial_header, update_header, name, final_update_message) + def publish_description(self, pr_title: str, pr_body: str): if len(pr_body) > MAX_PR_DESCRIPTION_AZURE_LENGTH: @@ -433,7 +436,6 @@ class AzureDevopsProvider(GitProvider): def publish_inline_comment(self, body: str, relevant_file: str, relevant_line_in_file: str, original_suggestion=None): self.publish_inline_comments([self.create_inline_comment(body, relevant_file, relevant_line_in_file)]) - def create_inline_comment(self, body: str, relevant_file: str, relevant_line_in_file: str, absolute_position: int = None): position, absolute_position = find_line_number_of_relevant_line_in_file(self.get_diff_files(), @@ -617,3 +619,13 @@ class AzureDevopsProvider(GitProvider): def get_line_link(self, relevant_file: str, relevant_line_start: int, relevant_line_end: int = None) -> str: return self.pr_url+f"?_a=files&path={relevant_file}" + + def get_comment_url(self, comment) -> str: + return self.pr_url + "?discussionId=" + str(comment.thread_id) + + def get_latest_commit_url(self) -> str: + commits = self.azure_devops_client.get_pull_request_commits(self.repo_slug, self.pr_num, self.workspace_slug) + last = commits[0] + url = self.azure_devops_client.normalized_url + "/" + self.workspace_slug + "/_git/" + self.repo_slug + "/commit/" + last.commit_id + return url + \ No newline at end of file diff --git a/pr_agent/tools/pr_code_suggestions.py b/pr_agent/tools/pr_code_suggestions.py index c742aa06..0dea2e70 100644 --- a/pr_agent/tools/pr_code_suggestions.py +++ b/pr_agent/tools/pr_code_suggestions.py @@ -267,14 +267,6 @@ class PRCodeSuggestions: up_to_commit_txt = f" up to commit {match.group(0)[4:-3].strip()}" return up_to_commit_txt - if isinstance(git_provider, AzureDevopsProvider): # get_latest_commit_url is not supported yet - if progress_response: - git_provider.edit_comment(progress_response, pr_comment) - new_comment = progress_response - else: - new_comment = git_provider.publish_comment(pr_comment) - return new_comment - history_header = f"#### Previous suggestions\n" last_commit_num = git_provider.get_latest_commit_url().split('/')[-1][:7] if only_fold: # A user clicked on the 'self-review' checkbox