mirror of
https://github.com/go-gitea/gitea.git
synced 2026-06-14 03:29:55 +00:00
54916f708e
Parse `Co-authored-by:` trailers from commit messages and surface contributors as an avatar stack across the commit page, commits list, PR commits tab, latest-commit row, blame, graph, and dashboard feed. - Up to 10 visible 20px avatars, GitHub-style overlap (6px first stride, 4px between subsequent), `+N` chip for the rest. - Label: 1 → name; 2 → `<a> and <b>`; 3+ → `<N> people` opens a Tippy popup with all participants. - Names and avatars link to the repo's commits-by-author search; fall back to profile or `mailto:`. - Trailer parsing uses `net/mail.ParseAddress`, scans only the trailing paragraph, filters out the commit's own author/committer. - Drops the non-standard `Co-committed-by:` emission on squash merge and web edits. Devtest: `/devtest/coauthor-avatars`. Fixes #25521 ---- <img width="353" height="277" alt="image" src="https://github.com/user-attachments/assets/72092ceb-97ca-4b09-9557-0b72d3c5458e" /> <img width="533" height="328" src="https://github.com/user-attachments/assets/11d0c8f8-8b3f-4f2e-9993-879f1c06bcc5" /> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: Giteabot <teabot@gitea.io>
53 lines
2.2 KiB
Handlebars
53 lines
2.2 KiB
Handlebars
<div id="rev-container">
|
|
<ul id="rev-list">
|
|
{{range $commitI, $commit := .Graph.Commits}}
|
|
<li {{if $commit.Rev}}id="commit-{{$commit.Rev}}"{{end}} data-flow="{{$commit.Flow}}">
|
|
{{if $commit.OnlyRelation}}
|
|
<span></span>
|
|
{{else}}
|
|
{{/* every field must be in a span to get correctly styled */}}
|
|
<span>
|
|
{{template "repo/commit_sign_badge" dict "Commit" $commit.Commit "CommitBaseLink" (print $.RepoLink "/commit") "CommitSignVerification" $commit.Verification}}
|
|
</span>
|
|
|
|
<span class="message tw-inline-block gt-ellipsis">
|
|
{{ctx.RenderUtils.RenderCommitMessage $commit.Subject $.Repository}}
|
|
</span>
|
|
|
|
<span class="commit-refs flex-text-inline">
|
|
{{range $commit.Refs}}
|
|
{{$refGroup := .RefGroup}}
|
|
{{if eq $refGroup "pull"}}
|
|
{{if or (not $.HidePRRefs) (SliceUtils.Contains $.SelectedBranches .Name)}}
|
|
<!-- it's intended to use issues not pulls, if it's a pull you will get redirected -->
|
|
<a class="ui basic tiny button" href="{{$.RepoLink}}/{{if $.Repository.UnitEnabled ctx ctx.Consts.RepoUnitTypePullRequests}}pulls{{else}}issues{{end}}/{{.ShortName|PathEscape}}">
|
|
{{svg "octicon-git-pull-request"}} #{{.ShortName}}
|
|
</a>
|
|
{{end}}
|
|
{{else if eq $refGroup "tags"}}
|
|
{{- template "repo/tag/name" dict "AdditionalClasses" "tag-label" "RepoLink" $.Repository.Link "TagName" .ShortName -}}
|
|
{{else if eq $refGroup "remotes"}}
|
|
<a class="ui basic tiny button" href="{{$.RepoLink}}/src/commit/{{$commit.Rev|PathEscape}}">
|
|
{{svg "octicon-cross-reference"}} {{.ShortName}}
|
|
</a>
|
|
{{else if eq $refGroup "heads"}}
|
|
<a class="ui basic tiny button" href="{{$.RepoLink}}/src/branch/{{.ShortName|PathEscape}}">
|
|
{{svg "octicon-git-branch"}} {{.ShortName}}
|
|
</a>
|
|
{{else}}
|
|
<!-- Unknown ref type .Name -->
|
|
{{end}}
|
|
{{end}}
|
|
</span>
|
|
|
|
<span class="flex-text-inline tw-text-12">
|
|
{{ctx.RenderUtils.AvatarStackWithNames $commit.AvatarStackData}}
|
|
</span>
|
|
|
|
<span class="time flex-text-inline">{{DateUtils.FullTime $commit.Date}}</span>
|
|
{{end}}
|
|
</li>
|
|
{{end}}
|
|
</ul>
|
|
</div>
|