Azure devops provider: add persistent comment

This commit is contained in:
Thomas De Keulenaer
2025-05-07 14:46:08 +02:00
parent e516d66c1c
commit c924affebc
2 changed files with 17 additions and 13 deletions

View File

@ -170,10 +170,6 @@ class AzureDevopsProvider(GitProvider):
return [] return []
def is_supported(self, capability: str) -> bool: def is_supported(self, capability: str) -> bool:
if capability in [
"get_issue_comments",
]:
return False
return True return True
def set_pr(self, pr_url: str): def set_pr(self, pr_url: str):
@ -390,6 +386,13 @@ class AzureDevopsProvider(GitProvider):
self.temp_comments.append(created_comment) self.temp_comments.append(created_comment)
return 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): def publish_description(self, pr_title: str, pr_body: str):
if len(pr_body) > MAX_PR_DESCRIPTION_AZURE_LENGTH: 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): 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)]) 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, def create_inline_comment(self, body: str, relevant_file: str, relevant_line_in_file: str,
absolute_position: int = None): absolute_position: int = None):
position, absolute_position = find_line_number_of_relevant_line_in_file(self.get_diff_files(), 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: 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}" 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

View File

@ -267,14 +267,6 @@ class PRCodeSuggestions:
up_to_commit_txt = f" up to commit {match.group(0)[4:-3].strip()}" up_to_commit_txt = f" up to commit {match.group(0)[4:-3].strip()}"
return up_to_commit_txt 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" history_header = f"#### Previous suggestions\n"
last_commit_num = git_provider.get_latest_commit_url().split('/')[-1][:7] last_commit_num = git_provider.get_latest_commit_url().split('/')[-1][:7]
if only_fold: # A user clicked on the 'self-review' checkbox if only_fold: # A user clicked on the 'self-review' checkbox