mirror of
https://github.com/go-gitea/gitea.git
synced 2026-08-23 10:13:32 +02:00
`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>
79 lines
2.4 KiB
Go
79 lines
2.4 KiB
Go
// Copyright 2016 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package structs
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// Release represents a repository release
|
|
type Release struct {
|
|
// The unique identifier of the release
|
|
ID int64 `json:"id"`
|
|
// The name of the git tag associated with the release
|
|
TagName string `json:"tag_name"`
|
|
// The target commitish for the release
|
|
Target string `json:"target_commitish"`
|
|
// The display title of the release
|
|
Title string `json:"name"`
|
|
// The release notes or description
|
|
Note string `json:"body"`
|
|
// The API URL of the release
|
|
URL string `json:"url"`
|
|
// The HTML URL to view the release
|
|
HTMLURL string `json:"html_url"`
|
|
// The URL to download the tarball archive
|
|
TarURL string `json:"tarball_url"`
|
|
// The URL to download the zip archive
|
|
ZipURL string `json:"zipball_url"`
|
|
// The URL template for uploading release assets
|
|
UploadURL string `json:"upload_url"`
|
|
// Whether the release is a draft
|
|
IsDraft bool `json:"draft"`
|
|
// Whether the release is a prerelease
|
|
IsPrerelease bool `json:"prerelease"`
|
|
// swagger:strfmt date-time
|
|
CreatedAt time.Time `json:"created_at"`
|
|
// swagger:strfmt date-time
|
|
PublishedAt *time.Time `json:"published_at"`
|
|
// The user who published the release
|
|
Publisher *User `json:"author"`
|
|
// The files attached to the release
|
|
Attachments []*Attachment `json:"assets"`
|
|
}
|
|
|
|
// CreateReleaseOption options when creating a release
|
|
type CreateReleaseOption struct {
|
|
// required: true
|
|
TagName string `json:"tag_name" binding:"Required"`
|
|
// The message for the git tag
|
|
TagMessage string `json:"tag_message"`
|
|
// The target commitish for the release
|
|
Target string `json:"target_commitish"`
|
|
// The display title of the release
|
|
Title string `json:"name"`
|
|
// The release notes or description
|
|
Note string `json:"body"`
|
|
// Whether to create the release as a draft
|
|
IsDraft bool `json:"draft"`
|
|
// Whether to mark the release as a prerelease
|
|
IsPrerelease bool `json:"prerelease"`
|
|
}
|
|
|
|
// EditReleaseOption options when editing a release
|
|
type EditReleaseOption struct {
|
|
// The new name of the git tag
|
|
TagName string `json:"tag_name"`
|
|
// The new target commitish for the release
|
|
Target string `json:"target_commitish"`
|
|
// The new display title of the release
|
|
Title string `json:"name"`
|
|
// The new release notes or description
|
|
Note string `json:"body"`
|
|
// Whether to change the draft status
|
|
IsDraft *bool `json:"draft"`
|
|
// Whether to change the prerelease status
|
|
IsPrerelease *bool `json:"prerelease"`
|
|
}
|