Skip to content

Add new property to PullRequest ("merged" for forgejo compability)#162

Open
HadronCollider wants to merge 3 commits intomasterfrom
dev
Open

Add new property to PullRequest ("merged" for forgejo compability)#162
HadronCollider wants to merge 3 commits intomasterfrom
dev

Conversation

@HadronCollider
Copy link
Copy Markdown
Collaborator

Наблюдение за смерженными PR в Forgejo:

  • поле "merged_by" - всегда пустое
  • поля "merged" (флаг) и "merged_at" (время мержа) используются и не пустые

Итого: в классы PR введено поле "merged" для идентификации смерженых PR (поле добавлено в конец csv-выгрузки, чтобы не ломать имеющиеся таблицы)

close #161

@HadronCollider HadronCollider self-assigned this Mar 18, 2026
@thehighestmath
Copy link
Copy Markdown
Collaborator

/ai-review

3 similar comments
@thehighestmath
Copy link
Copy Markdown
Collaborator

/ai-review

@thehighestmath
Copy link
Copy Markdown
Collaborator

/ai-review

@thehighestmath
Copy link
Copy Markdown
Collaborator

/ai-review

@HadronCollider
Copy link
Copy Markdown
Collaborator Author

Upd: информация о смержившем пользователе добавляется для смерженных PR (требуется дополнительный запрос для получения информации по конкретному PR)

Comment thread src/ForgejoRepoAPI.py
issue_url=None, # TODO если возможно
merged_by=self.get_user_data(self.get_pull_request(repo, p.number).merged_by) if p.merged else None,
# TODO: merged_by always empty in result of repo_list_pull_requests
# (but merged and merged_at are usable)
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавлена заглушка TODO для улучшения кода в будущем.

#ai-review-inline

Comment thread src/ForgejoRepoAPI.py
merged_by=self.get_user_data(p.merged_by) if p.merged_by else None,
files=[], # TODO если возможно
issue_url=None, # TODO если возможно
merged_by=self.get_user_data(self.get_pull_request(repo, p.number).merged_by) if p.merged else None,
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Удалены строки, содержащие устаревшие поля merged_by, files и issue_url.

#ai-review-inline

Comment thread src/ForgejoRepoAPI.py
repo.owner.login, repo.name, obj._id, 100000
) # нет id комментария
)
# нет id комментария - сейчас не работает, т.к. требуется ID ревью - нужно сначала получить \
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавлен комментарий о том, что сейчас не работает из-за отсутствия ID ревью.

#ai-review-inline

Comment thread src/ForgejoRepoAPI.py
merged_by=self.get_user_data(p.merged_by) if p.merged_by else None,
files=[], # TODO если возможно
issue_url=None, # TODO если возможно
merged_by=self.get_user_data(self.get_pull_request(repo, p.number).merged_by) if p.merged else None,
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавлены строки с новыми полями merged_by и issue_url.

#ai-review-inline

Comment thread src/ForgejoRepoAPI.py
comments = self.client.repository.repo_get_pull_review_comments(
repo.owner.login, repo.name, obj._id, 100000
) # нет id комментария
)
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Изменено местоположение комментария, теперь он находится после запроса get_pull_review_comments.

#ai-review-inline

Comment thread src/ForgejoRepoAPI.py
for p in pulls
]

@log_exceptions(default_return={}, message="Failed to get pull request data from Forgejo")
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавлен метод get_pull_request для получения данных о Pull Request.

#ai-review-inline

Comment thread src/ForgejoRepoAPI.py
files=[], # TODO если возможно
issue_url=None, # TODO если возможно
merged_by=self.get_user_data(self.get_pull_request(repo, p.number).merged_by) if p.merged else None,
# TODO: merged_by always empty in result of repo_list_pull_requests
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавлена заглушка TODO для улучшения кода в будущем.

#ai-review-inline

Comment thread src/ForgejoRepoAPI.py
) # нет id комментария
)
# нет id комментария - сейчас не работает, т.к. требуется ID ревью - нужно сначала получить \
# список ревью /repos/{owner}/{repo}/pulls/{index}/reviews
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавлен комментарий о необходимости отдельных запросов для получения комментариев и ревью.

#ai-review-inline

Comment thread src/ForgejoRepoAPI.py
)
# нет id комментария - сейчас не работает, т.к. требуется ID ревью - нужно сначала получить \
# список ревью /repos/{owner}/{repo}/pulls/{index}/reviews
# TODO: нужны отдельные запросы для получения комментариев и комментариев ревью #163, \
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Упомянуты поля comments и review_comments в сущности PullRequest.

#ai-review-inline

@@ -63,7 +63,7 @@ jobs:
HEADER="repository name,author name,author login,author email,date and time,changed files,commit id,branch"
;;
--pull_requests)
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В коде была удалена строка с заголовком комментариев, но в новой версии файла она не обновлена.

#ai-review-inline

;;
--pull_requests)
HEADER="repository name,title,id,state,commit into,commit from,created at,creator name,creator login,creator email,changed files,comment body,comment created at,comment author name,comment author login,comment author email,merger name,merger login,merger email,source branch,target branch,assignee story,related issues,labels,milestone"
HEADER="repository name,title,id,state,commit into,commit from,created at,creator name,creator login,creator email,changed files,comment body,comment created at,comment author name,comment author login,comment author email,merger name,merger login,merger email,source branch,target branch,assignee story,related issues,labels,milestone,merged"
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В коде добавлен новый заголовок для комментариев, но в новой версии файла нет указания на это.

#ai-review-inline

;;
--pull_requests)
HEADER="repository name,title,id,state,commit into,commit from,created at,creator name,creator login,creator email,changed files,comment body,comment created at,comment author name,comment author login,comment author email,merger name,merger login,merger email,source branch,target branch,assignee story,related issues,labels,milestone"
HEADER="repository name,title,id,state,commit into,commit from,created at,creator name,creator login,creator email,changed files,comment body,comment created at,comment author name,comment author login,comment author email,merger name,merger login,merger email,source branch,target branch,assignee story,related issues,labels,milestone,merged"
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В коде была удалена строка с заголовком комментария, но в новой версии файла она не обновлена.

#ai-review-inline

if pr["mergedBy"] and "email" in pr["mergedBy"]
else None
),
merged=pr["mergedBy"] and "name" in pr["mergedBy"], # TODO: refactor?
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Логика условного выражения в 'merged' не соответствует ожиданиям.

#ai-review-inline

Comment thread src/GitHubRepoAPI.py
head_ref=p.head.ref,
base_ref=p.base.ref,
merged_by=self.get_user_data(p.merged_by) if p.merged_by else None,
merged=bool(p.merged_by),
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавлен логический флаг 'merged', который должен быть установлен в значение True, если есть автор слияния.

#ai-review-inline

merger_name=pull.merged_by.username if pull.merged_by else None,
merger_login=pull.merged_by.login if pull.merged_by else None,
merger_email=pull.merged_by.email if pull.merged_by else None,
merged=pull.merged,
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавлен лишний комментарий в коде.

#ai-review-inline

Comment thread src/repo_dataclasses.py
related_issues: str = ''
labels: str = ''
milestone: str = ''
merged: bool = False
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавлен логический флаг 'merged', который не имеет смысла в контексте данного класса.

#ai-review-inline

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Forgejo: в выгрузке PR нет информации о смержившем пользователе (merger name)

2 participants