fix: release page for empty or non-existing target (#24470)
Fixes #24145 To solve the bug, I added a "computed" `TargetBehind` field to the `Release` model, which indicates the target branch of a release. This is particularly useful if the target branch was deleted in the meantime (or is empty). I also did a micro-optimization in `calReleaseNumCommitsBehind`. Instead of checking that a branch exists and then call `GetBranchCommit`, I immediately call `GetBranchCommit` and handle the `git.ErrNotExist` error. This optimization is covered by the added unit test.
This commit is contained in:
parent
5930ab5fdf
commit
8030614386
6 changed files with 107 additions and 17 deletions
|
@ -108,3 +108,31 @@
|
|||
is_prerelease: false
|
||||
is_tag: false
|
||||
created_unix: 946684803
|
||||
|
||||
- id: 9
|
||||
repo_id: 57
|
||||
publisher_id: 2
|
||||
tag_name: "non-existing-target-branch"
|
||||
lower_tag_name: "non-existing-target-branch"
|
||||
target: "non-existing"
|
||||
title: "non-existing-target-branch"
|
||||
sha1: "cef06e48f2642cd0dc9597b4bea09f4b3f74aad6"
|
||||
num_commits: 5
|
||||
is_draft: false
|
||||
is_prerelease: false
|
||||
is_tag: false
|
||||
created_unix: 946684803
|
||||
|
||||
- id: 10
|
||||
repo_id: 57
|
||||
publisher_id: 2
|
||||
tag_name: "empty-target-branch"
|
||||
lower_tag_name: "empty-target-branch"
|
||||
target: ""
|
||||
title: "empty-target-branch"
|
||||
sha1: "cef06e48f2642cd0dc9597b4bea09f4b3f74aad6"
|
||||
num_commits: 5
|
||||
is_draft: false
|
||||
is_prerelease: false
|
||||
is_tag: false
|
||||
created_unix: 946684803
|
||||
|
|
|
@ -72,6 +72,7 @@ type Release struct {
|
|||
OriginalAuthorID int64 `xorm:"index"`
|
||||
LowerTagName string
|
||||
Target string
|
||||
TargetBehind string `xorm:"-"` // to handle non-existing or empty target
|
||||
Title string
|
||||
Sha1 string `xorm:"VARCHAR(40)"`
|
||||
NumCommits int64
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue