Fix tags sort by creation time (descending) on branch/tag dropdowns (#23491)
This PR fixes the tags sort issue mentioned in #23432 The tags on dropdown shoud be sorted in descending order of time but are not. Because when getting tags, it execeutes `git tag sort --sort=-taggerdate`. Git supports two types of tags: lightweight and annotated, and `git tag sort --sort=-taggerdate` dosen't work with lightweight tags, which will not give correct result. This PR add `GetTagNamesByRepoID ` to get tags from the database so the tags are sorted. Also adapt this change to the droplist when comparing branches. Dropdown places: <img width="369" alt="截屏2023-03-15 14 25 39" src="https://user-images.githubusercontent.com/17645053/225224506-65a72e50-4c11-41d7-8187-a7e9c7dab2cb.png"> <img width="675" alt="截屏2023-03-15 14 25 27" src="https://user-images.githubusercontent.com/17645053/225224526-65ce8008-340c-43f6-aa65-b6bd9e1a1bf1.png">
This commit is contained in:
parent
661e78bed5
commit
8d9f8e10b1
3 changed files with 28 additions and 18 deletions
|
@ -253,6 +253,28 @@ func GetReleasesByRepoID(ctx context.Context, repoID int64, opts FindReleasesOpt
|
|||
return rels, sess.Find(&rels)
|
||||
}
|
||||
|
||||
// GetTagNamesByRepoID returns a list of release tag names of repository.
|
||||
func GetTagNamesByRepoID(ctx context.Context, repoID int64) ([]string, error) {
|
||||
listOptions := db.ListOptions{
|
||||
ListAll: true,
|
||||
}
|
||||
opts := FindReleasesOptions{
|
||||
ListOptions: listOptions,
|
||||
IncludeDrafts: true,
|
||||
IncludeTags: true,
|
||||
HasSha1: util.OptionalBoolTrue,
|
||||
}
|
||||
|
||||
tags := make([]string, 0)
|
||||
sess := db.GetEngine(ctx).
|
||||
Table("release").
|
||||
Desc("created_unix", "id").
|
||||
Where(opts.toConds(repoID)).
|
||||
Cols("tag_name")
|
||||
|
||||
return tags, sess.Find(&tags)
|
||||
}
|
||||
|
||||
// CountReleasesByRepoID returns a number of releases matching FindReleaseOptions and RepoID.
|
||||
func CountReleasesByRepoID(repoID int64, opts FindReleasesOptions) (int64, error) {
|
||||
return db.GetEngine(db.DefaultContext).Where(opts.toConds(repoID)).Count(new(Release))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue