mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-23 07:43:18 -05:00
Restore propagation of ErrDependenciesLeft (#18325)
Unfortunately #17643 prevented all propagation of ErrDependenciesLeft meaning that dependency errors that prevent closing of issues get swallowed. This PR restores propagation of the error but instead swallows the error in the places where it needs to be swallowed. Fix #18223 Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
parent
84f8ef3df6
commit
4a20eadfd7
3 changed files with 9 additions and 6 deletions
|
@ -8,6 +8,7 @@ import (
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
|
"code.gitea.io/gitea/modules/log"
|
||||||
"code.gitea.io/gitea/modules/notification"
|
"code.gitea.io/gitea/modules/notification"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -15,10 +16,9 @@ import (
|
||||||
func ChangeStatus(issue *models.Issue, doer *user_model.User, closed bool) error {
|
func ChangeStatus(issue *models.Issue, doer *user_model.User, closed bool) error {
|
||||||
comment, err := issue.ChangeStatus(doer, closed)
|
comment, err := issue.ChangeStatus(doer, closed)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Don't return an error when dependencies are open as this would let the push fail
|
if models.IsErrDependenciesLeft(err) && closed {
|
||||||
if models.IsErrDependenciesLeft(err) {
|
if err := models.FinishIssueStopwatchIfPossible(db.DefaultContext, doer, issue); err != nil {
|
||||||
if closed {
|
log.Error("Unable to stop stopwatch for issue[%d]#%d: %v", issue.ID, issue.Index, err)
|
||||||
return models.FinishIssueStopwatchIfPossible(db.DefaultContext, doer, issue)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -105,7 +105,10 @@ func Merge(pr *models.PullRequest, doer *user_model.User, baseGitRepo *git.Repos
|
||||||
close := ref.RefAction == references.XRefActionCloses
|
close := ref.RefAction == references.XRefActionCloses
|
||||||
if close != ref.Issue.IsClosed {
|
if close != ref.Issue.IsClosed {
|
||||||
if err = issue_service.ChangeStatus(ref.Issue, doer, close); err != nil {
|
if err = issue_service.ChangeStatus(ref.Issue, doer, close); err != nil {
|
||||||
return err
|
// Allow ErrDependenciesLeft
|
||||||
|
if !models.IsErrDependenciesLeft(err) {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -514,7 +514,7 @@ func CloseBranchPulls(doer *user_model.User, repoID int64, branch string) error
|
||||||
|
|
||||||
var errs errlist
|
var errs errlist
|
||||||
for _, pr := range prs {
|
for _, pr := range prs {
|
||||||
if err = issue_service.ChangeStatus(pr.Issue, doer, true); err != nil && !models.IsErrPullWasClosed(err) {
|
if err = issue_service.ChangeStatus(pr.Issue, doer, true); err != nil && !models.IsErrPullWasClosed(err) && !models.IsErrDependenciesLeft(err) {
|
||||||
errs = append(errs, err)
|
errs = append(errs, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue