mirror of
https://github.com/go-gitea/gitea.git
synced 2026-08-24 23:04:23 +00:00
fa0b39a42b
`published_at` was an alias for `created_at`, so a release created from an existing tag reported that tag's commit date as its publication time, and drafts reported one despite never having been published. It is now stored separately, set when a release is published and null for drafts. `created_at` in turn means the date of the commit the release points at, matching what GitHub documents it to be, and the latest release is selected by it again. Publishing a release for an old commit no longer takes over the latest badge, and a tag created in the web UI is dated the same way as one pushed from the CLI. Fixes https://github.com/go-gitea/gitea/issues/11206 Fixes https://github.com/go-gitea/gitea/issues/38714 Fixes https://github.com/go-gitea/gitea/issues/31789 --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
133 lines
6.1 KiB
Handlebars
133 lines
6.1 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="flex-left-right 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="tw-text-text-light">
|
|
<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"}}
|
|
{{if gt $release.PublisherID 0}}
|
|
<a href="{{$release.Publisher.HomeLink}}">{{$release.Publisher.GetDisplayName}}</a>
|
|
{{else}}
|
|
{{$release.Publisher.GetDisplayName}}
|
|
{{end}}
|
|
{{else}}
|
|
Ghost
|
|
{{end}}
|
|
</span>
|
|
{{if not $release.IsDraft}}
|
|
<span class="released">
|
|
{{ctx.Locale.Tr "repo.released_this"}}
|
|
</span>
|
|
<span class="time">{{DateUtils.TimeSince $release.PublishedUnix}}</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">
|
|
{{range $att := $release.Attachments}}
|
|
<li class="item">
|
|
<a target="_blank" class="tw-flex-1 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}}
|
|
{{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}}
|
|
</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" .}}
|