Skip to content

Commit e692735

Browse files
authored
Merge pull request #1662 from qodo-ai/tr/more_protections
Tr/more protections gitlab
2 parents ed00ef6 + 7bd0fef commit e692735

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

pr_agent/git_providers/gitlab_provider.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,8 @@ def get_issue_comments(self):
515515

516516
def get_repo_settings(self):
517517
try:
518-
contents = self.gl.projects.get(self.id_project).files.get(file_path='.pr_agent.toml', ref=self.mr.target_branch).decode()
518+
main_branch = self.gl.projects.get(self.id_project).default_branch
519+
contents = self.gl.projects.get(self.id_project).files.get(file_path='.pr_agent.toml', ref=main_branch).decode()
519520
return contents
520521
except Exception:
521522
return ""

pr_agent/tools/pr_questions.py

+13-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from pr_agent.algo.token_handler import TokenHandler
1010
from pr_agent.algo.utils import ModelType
1111
from pr_agent.config_loader import get_settings
12-
from pr_agent.git_providers import get_git_provider
12+
from pr_agent.git_providers import get_git_provider, GitLabProvider
1313
from pr_agent.git_providers.git_provider import get_main_pr_language
1414
from pr_agent.log import get_logger
1515
from pr_agent.servers.help import HelpMessage
@@ -116,10 +116,22 @@ async def _get_prediction(self, model: str):
116116
model=model, temperature=get_settings().config.temperature, system=system_prompt, user=user_prompt)
117117
return response
118118

119+
def gitlab_protections(self, model_answer: str) -> str:
120+
github_quick_actions_MR = ["/approve", "/close", "/merge", "/reopen", "/unapprove", "/title", "/assign",
121+
"/copy_metadata", "/target_branch"]
122+
if any(action in model_answer for action in github_quick_actions_MR):
123+
str_err = "Model answer contains GitHub quick actions, which are not supported in GitLab"
124+
get_logger().error(str_err)
125+
return str_err
126+
return model_answer
127+
119128
def _prepare_pr_answer(self) -> str:
120129
model_answer = self.prediction.strip()
121130
# sanitize the answer so that no line will start with "/"
122131
model_answer_sanitized = model_answer.replace("\n/", "\n /")
132+
model_answer_sanitized = model_answer_sanitized.replace("\r/", "\r /")
133+
if isinstance(self.git_provider, GitLabProvider):
134+
model_answer_sanitized = self.gitlab_protections(model_answer_sanitized)
123135
if model_answer_sanitized.startswith("/"):
124136
model_answer_sanitized = " " + model_answer_sanitized
125137
if model_answer_sanitized != model_answer:

0 commit comments

Comments
 (0)