mirror of
https://github.com/go-gitea/gitea.git
synced 2025-08-03 05:54:26 +02:00
Backport #34355 by @lunny The tags synchronization is very slow for a non-mirror repository with many tags especially forking. This PR make all repositories' tags synchronization use the same function and remove the low performance synchronization function. The commit count of tag now will not be stored into database when syncing. Since the commits count will always be read from cache or git data, the `NumCommits` in the release table will be updated for the first read from git data. Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
129 lines
6.0 KiB
Handlebars
129 lines
6.0 KiB
Handlebars
{{template "base/head" .}}
|
|
<div role="main" aria-label="{{.Title}}" class="page-content repository releases">
|
|
{{template "repo/header" .}}
|
|
<div class="ui container">
|
|
{{template "base/alert" .}}
|
|
{{template "repo/release_tag_header" .}}
|
|
<ul id="release-list">
|
|
{{range $idx, $info := .Releases}}
|
|
{{$release := $info.Release}}
|
|
<li class="release-entry">
|
|
<div class="meta">
|
|
<a class="muted" href="{{if not (and $release.Sha1 ($.Permission.CanRead ctx.Consts.RepoUnitTypeCode))}}#{{else}}{{$.RepoLink}}/src/tag/{{$release.TagName | PathEscapeSegments}}{{end}}" rel="nofollow">{{svg "octicon-tag" 16 "tw-mr-1"}}{{$release.TagName}}</a>
|
|
{{if and $release.Sha1 ($.Permission.CanRead ctx.Consts.RepoUnitTypeCode)}}
|
|
<a class="muted tw-font-mono" href="{{$.RepoLink}}/src/commit/{{$release.Sha1}}" rel="nofollow">{{svg "octicon-git-commit" 16 "tw-mr-1"}}{{ShortSha $release.Sha1}}</a>
|
|
{{$compareTarget := ""}}
|
|
{{if $release.IsDraft}}
|
|
{{$compareTarget = $release.Target}}
|
|
{{else if $release.TagName}}
|
|
{{$compareTarget = $release.TagName}}
|
|
{{else}}
|
|
{{$compareTarget = $release.Sha1}}
|
|
{{end}}
|
|
{{template "repo/branch_dropdown" dict
|
|
"ContainerClasses" "release-branch-tag-selector"
|
|
"Repository" $.Repository
|
|
"ShowTabTags" true
|
|
"DropdownFixedText" (ctx.Locale.Tr "repo.release.compare")
|
|
"RefLinkTemplate" (print "{RepoLink}/compare/{RefShortName}" "..." (PathEscapeSegments $compareTarget))
|
|
}}
|
|
{{end}}
|
|
</div>
|
|
<div class="ui segment detail">
|
|
<div class="tw-flex tw-items-center tw-justify-between tw-flex-wrap tw-mb-2">
|
|
<h4 class="release-list-title tw-break-anywhere">
|
|
{{if $.PageIsSingleTag}}{{$release.Title}}{{else}}<a class="muted" href="{{$.RepoLink}}/releases/tag/{{$release.TagName | PathEscapeSegments}}">{{$release.Title}}</a>{{end}}
|
|
{{template "repo/commit_statuses" dict "Status" $info.CommitStatus "Statuses" $info.CommitStatuses "AdditionalClasses" "tw-flex"}}
|
|
{{template "repo/release/label" (dict "Release" $release)}}
|
|
</h4>
|
|
<div>
|
|
{{if and $.CanCreateRelease (not $.PageIsSingleTag)}}
|
|
<a class="muted" data-tooltip-content="{{ctx.Locale.Tr "repo.release.edit"}}" href="{{$.RepoLink}}/releases/edit/{{$release.TagName | PathEscapeSegments}}" rel="nofollow">
|
|
{{svg "octicon-pencil"}}
|
|
</a>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
<p class="text grey">
|
|
<span class="author">
|
|
{{if $release.OriginalAuthor}}
|
|
{{svg (MigrationIcon $release.Repo.GetOriginalURLHostname) 20 "tw-mr-1"}}{{$release.OriginalAuthor}}
|
|
{{else if $release.Publisher}}
|
|
{{ctx.AvatarUtils.Avatar $release.Publisher 20 "tw-mr-1"}}
|
|
<a href="{{$release.Publisher.HomeLink}}">{{$release.Publisher.GetDisplayName}}</a>
|
|
{{else}}
|
|
Ghost
|
|
{{end}}
|
|
</span>
|
|
<span class="released">
|
|
{{ctx.Locale.Tr "repo.released_this"}}
|
|
</span>
|
|
{{if $release.CreatedUnix}}
|
|
<span class="time">{{DateUtils.TimeSince $release.CreatedUnix}}</span>
|
|
{{end}}
|
|
{{if and (gt $release.NumCommits 0) (not $release.IsDraft) ($.Permission.CanRead ctx.Consts.RepoUnitTypeCode)}}
|
|
| <span class="ahead"><a href="{{$.RepoLink}}/compare/{{$release.TagName | PathEscapeSegments}}...{{$release.TargetBehind | PathEscapeSegments}}">{{ctx.Locale.Tr "repo.release.ahead.commits" $release.NumCommitsBehind}}</a> {{ctx.Locale.Tr "repo.release.ahead.target" $release.TargetBehind}}</span>
|
|
{{end}}
|
|
</p>
|
|
<div class="render-content markup">
|
|
{{$release.RenderedNote}}
|
|
</div>
|
|
<div class="divider"></div>
|
|
<details class="download" {{if eq $idx 0}}open{{end}}>
|
|
<summary>
|
|
{{ctx.Locale.Tr "repo.release.downloads"}}
|
|
</summary>
|
|
<ul class="ui divided list attachment-list">
|
|
{{if and (not $.DisableDownloadSourceArchives) (not $release.IsDraft) ($.Permission.CanRead ctx.Consts.RepoUnitTypeCode)}}
|
|
<li class="item">
|
|
<a class="archive-link" download href="{{$.RepoLink}}/archive/{{$release.TagName | PathEscapeSegments}}.zip" rel="nofollow">
|
|
<strong class="flex-text-inline">{{svg "octicon-file-zip" 16 "download-icon"}}{{ctx.Locale.Tr "repo.release.source_code"}} (ZIP)</strong>
|
|
</a>
|
|
</li>
|
|
<li class="item">
|
|
<a class="archive-link" download href="{{$.RepoLink}}/archive/{{$release.TagName | PathEscapeSegments}}.tar.gz" rel="nofollow">
|
|
<strong class="flex-text-inline">{{svg "octicon-file-zip" 16 "download-icon"}}{{ctx.Locale.Tr "repo.release.source_code"}} (TAR.GZ)</strong>
|
|
</a>
|
|
</li>
|
|
{{end}}
|
|
{{range $att := $release.Attachments}}
|
|
<li class="item">
|
|
<a target="_blank" class="tw-flex-grow-[2] gt-ellipsis" rel="nofollow" download href="{{$att.DownloadURL}}">
|
|
<strong class="flex-text-inline">{{svg "octicon-package" 16 "download-icon"}}<span class="gt-ellipsis">{{$att.Name}}</span></strong>
|
|
</a>
|
|
<div class="attachment-right-info flex-text-inline">
|
|
<span class="tw-pl-5">{{$att.Size | FileSize}}</span>
|
|
<span class="flex-text-inline" data-tooltip-content="{{ctx.Locale.Tr "repo.release.download_count" (ctx.Locale.PrettyNumber $att.DownloadCount)}}">
|
|
{{svg "octicon-info"}}
|
|
</span>
|
|
<div class="tw-flex-1"></div>
|
|
{{DateUtils.TimeSince $att.CreatedUnix}}
|
|
</div>
|
|
</li>
|
|
{{end}}
|
|
</ul>
|
|
</details>
|
|
</div>
|
|
</li>
|
|
{{end}}
|
|
</ul>
|
|
|
|
{{template "base/paginate" .}}
|
|
</div>
|
|
</div>
|
|
|
|
{{if (and ($.Permission.CanWrite ctx.Consts.RepoUnitTypeCode) .PageIsTagList)}}
|
|
<div class="ui g-modal-confirm delete modal">
|
|
<div class="header">
|
|
{{svg "octicon-trash"}}
|
|
{{ctx.Locale.Tr "repo.release.delete_tag"}}
|
|
</div>
|
|
<div class="content">
|
|
<p>{{ctx.Locale.Tr "repo.release.deletion_tag_desc"}}</p>
|
|
</div>
|
|
{{template "base/modal_actions_confirm" .}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{template "base/footer" .}}
|