pull-requests: expose commit versions in the pull-request commit list. Fixes #5642

This commit is contained in:
Milka Kuzminski 2020-12-29 08:48:26 +01:00
parent 4ddf097b9a
commit 9c33519fcc
4 changed files with 31 additions and 2 deletions

View file

@ -357,6 +357,9 @@ class RepoPullRequestsView(RepoAppView, DataGridAppView):
pull_request_id=pull_request_id))
versions = pull_request_display_obj.versions()
c.commit_versions = PullRequestModel().pr_commits_versions(versions)
# used to store per-commit range diffs
c.changes = collections.OrderedDict()

View file

@ -3821,8 +3821,12 @@ class ChangesetComment(Base, BaseModel):
return q.all()
@classmethod
def get_index_from_version(cls, pr_version, versions):
num_versions = [x.pull_request_version_id for x in versions]
def get_index_from_version(cls, pr_version, versions=None, num_versions=None):
if versions is not None:
num_versions = [x.pull_request_version_id for x in versions]
num_versions = num_versions or []
try:
return num_versions.index(pr_version) + 1
except (IndexError, ValueError):

View file

@ -610,6 +610,20 @@ class PullRequestModel(BaseModel):
return _org_pull_request_obj, pull_request_obj, \
pull_request_display_obj, at_version
def pr_commits_versions(self, versions):
"""
Maps the pull-request commits into all known PR versions. This way we can obtain
each pr version the commit was introduced in.
"""
commit_versions = collections.defaultdict(list)
num_versions = [x.pull_request_version_id for x in versions]
for ver in versions:
for commit_id in ver.revisions:
ver_idx = ChangesetComment.get_index_from_version(
ver.pull_request_version_id, num_versions=num_versions)
commit_versions[commit_id].append(ver_idx)
return commit_versions
def create(self, created_by, source_repo, source_ref, target_repo,
target_ref, revisions, reviewers, observers, title, description=None,
common_ancestor_id=None,

View file

@ -12,6 +12,9 @@
<input type="hidden" name="__start__" value="revisions:sequence">
<table class="rctable compare_view_commits">
<tr>
% if hasattr(c, 'commit_versions'):
<th>ver</th>
% endif
<th>${_('Time')}</th>
<th>${_('Author')}</th>
<th>${_('Commit')}</th>
@ -30,6 +33,11 @@
class="compare_select"
style="${'display: none' if c.collapse_all_commits else ''}"
>
% if hasattr(c, 'commit_versions'):
<td class="tooltip" title="${_('Pull request version this commit was introduced')}">
<code>${('v{}'.format(c.commit_versions[commit.raw_id][0]) if c.commit_versions[commit.raw_id] else 'latest')}</code>
</td>
% endif
<td class="td-time">
${h.age_component(commit.date)}
</td>