Show source/target branches on PR's list (#19747)
Add ability to show source/target branches for Pull Request's list. It can be useful to see which branches are used in each PR right in the list. Co-authored-by: Alexey Korobkov <akorobkov@cian.ru> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: Lauris BH <lauris@nix.lv>
This commit is contained in:
parent
35d0358c2a
commit
0692f437b6
|
@ -25,15 +25,16 @@ const (
|
||||||
defaultMaxInSize = 50
|
defaultMaxInSize = 50
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// get the repo IDs to be loaded later, these IDs are for issue.Repo and issue.PullRequest.HeadRepo
|
||||||
func (issues IssueList) getRepoIDs() []int64 {
|
func (issues IssueList) getRepoIDs() []int64 {
|
||||||
repoIDs := make(map[int64]struct{}, len(issues))
|
repoIDs := make(map[int64]struct{}, len(issues))
|
||||||
for _, issue := range issues {
|
for _, issue := range issues {
|
||||||
if issue.Repo != nil {
|
if issue.Repo == nil {
|
||||||
continue
|
|
||||||
}
|
|
||||||
if _, ok := repoIDs[issue.RepoID]; !ok {
|
|
||||||
repoIDs[issue.RepoID] = struct{}{}
|
repoIDs[issue.RepoID] = struct{}{}
|
||||||
}
|
}
|
||||||
|
if issue.PullRequest != nil && issue.PullRequest.HeadRepo == nil {
|
||||||
|
repoIDs[issue.PullRequest.HeadRepoID] = struct{}{}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return container.KeysInt64(repoIDs)
|
return container.KeysInt64(repoIDs)
|
||||||
}
|
}
|
||||||
|
@ -67,8 +68,11 @@ func (issues IssueList) loadRepositories(ctx context.Context) ([]*repo_model.Rep
|
||||||
} else {
|
} else {
|
||||||
repoMaps[issue.RepoID] = issue.Repo
|
repoMaps[issue.RepoID] = issue.Repo
|
||||||
}
|
}
|
||||||
if issue.PullRequest != nil && issue.PullRequest.BaseRepo == nil {
|
if issue.PullRequest != nil {
|
||||||
issue.PullRequest.BaseRepo = issue.Repo
|
issue.PullRequest.BaseRepo = issue.Repo
|
||||||
|
if issue.PullRequest.HeadRepo == nil {
|
||||||
|
issue.PullRequest.HeadRepo = repoMaps[issue.PullRequest.HeadRepoID]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return valuesRepository(repoMaps), nil
|
return valuesRepository(repoMaps), nil
|
||||||
|
|
|
@ -59,6 +59,27 @@
|
||||||
{{else}}
|
{{else}}
|
||||||
{{$.i18n.Tr .GetLastEventLabelFake $timeStr (.Poster.GetDisplayName | Escape) | Safe}}
|
{{$.i18n.Tr .GetLastEventLabelFake $timeStr (.Poster.GetDisplayName | Escape) | Safe}}
|
||||||
{{end}}
|
{{end}}
|
||||||
|
{{if .IsPull}}
|
||||||
|
<div class="branches">
|
||||||
|
<div class="branch">
|
||||||
|
<a class="bold" href="{{.PullRequest.BaseRepo.HTMLURL}}/src/branch/{{PathEscapeSegments .PullRequest.BaseBranch}}">
|
||||||
|
{{/* inline to remove the spaces between spans */}}
|
||||||
|
{{if ne .RepoID .PullRequest.BaseRepoID}}<span class="truncated-name">{{.PullRequest.BaseRepo.OwnerName}}</span>:{{end}}<span class="truncated-name">{{.PullRequest.BaseBranch}}</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
«
|
||||||
|
|
||||||
|
{{if .PullRequest.HeadRepo}}
|
||||||
|
<div class="branch">
|
||||||
|
<a class="bold" href="{{.PullRequest.HeadRepo.HTMLURL}}/src/branch/{{PathEscapeSegments .PullRequest.HeadBranch}}">
|
||||||
|
{{/* inline to remove the spaces between spans */}}
|
||||||
|
{{if ne .RepoID .PullRequest.HeadRepoID}}<span class="truncated-name">{{.PullRequest.HeadRepo.OwnerName}}</span>:{{end}}<span class="truncated-name">{{.PullRequest.HeadBranch}}</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
{{if and .Milestone (ne $.listType "milestone")}}
|
{{if and .Milestone (ne $.listType "milestone")}}
|
||||||
<a class="milestone" {{if $.RepoLink}}href="{{$.RepoLink}}/milestone/{{.Milestone.ID}}"{{else}}href="{{.Repo.Link}}/milestone/{{.Milestone.ID}}"{{end}}>
|
<a class="milestone" {{if $.RepoLink}}href="{{$.RepoLink}}/milestone/{{.Milestone.ID}}"{{else}}href="{{.Repo.Link}}/milestone/{{.Milestone.ID}}"{{end}}>
|
||||||
{{svg "octicon-milestone" 14 "mr-2"}}{{.Milestone.Name}}
|
{{svg "octicon-milestone" 14 "mr-2"}}{{.Milestone.Name}}
|
||||||
|
|
|
@ -119,6 +119,23 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.branches {
|
||||||
|
display: inline-flex;
|
||||||
|
padding: 0 6px;
|
||||||
|
|
||||||
|
.branch {
|
||||||
|
background-color: var(--color-secondary);
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.truncated-name {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
max-width: 10em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
> .item + .item {
|
> .item + .item {
|
||||||
border-top: 1px solid var(--color-secondary);
|
border-top: 1px solid var(--color-secondary);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue