Skip to content

Commit 4a20ead

Browse files
authored
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>
1 parent 84f8ef3 commit 4a20ead

File tree

3 files changed

+9
-6
lines changed

3 files changed

+9
-6
lines changed

services/issue/status.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@ import (
88
"code.gitea.io/gitea/models"
99
"code.gitea.io/gitea/models/db"
1010
user_model "code.gitea.io/gitea/models/user"
11+
"code.gitea.io/gitea/modules/log"
1112
"code.gitea.io/gitea/modules/notification"
1213
)
1314

1415
// ChangeStatus changes issue status to open or closed.
1516
func ChangeStatus(issue *models.Issue, doer *user_model.User, closed bool) error {
1617
comment, err := issue.ChangeStatus(doer, closed)
1718
if err != nil {
18-
// Don't return an error when dependencies are open as this would let the push fail
19-
if models.IsErrDependenciesLeft(err) {
20-
if closed {
21-
return models.FinishIssueStopwatchIfPossible(db.DefaultContext, doer, issue)
19+
if models.IsErrDependenciesLeft(err) && closed {
20+
if err := models.FinishIssueStopwatchIfPossible(db.DefaultContext, doer, issue); err != nil {
21+
log.Error("Unable to stop stopwatch for issue[%d]#%d: %v", issue.ID, issue.Index, err)
2222
}
2323
}
2424
return err

services/pull/merge.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,10 @@ func Merge(pr *models.PullRequest, doer *user_model.User, baseGitRepo *git.Repos
105105
close := ref.RefAction == references.XRefActionCloses
106106
if close != ref.Issue.IsClosed {
107107
if err = issue_service.ChangeStatus(ref.Issue, doer, close); err != nil {
108-
return err
108+
// Allow ErrDependenciesLeft
109+
if !models.IsErrDependenciesLeft(err) {
110+
return err
111+
}
109112
}
110113
}
111114
}

services/pull/pull.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ func CloseBranchPulls(doer *user_model.User, repoID int64, branch string) error
514514

515515
var errs errlist
516516
for _, pr := range prs {
517-
if err = issue_service.ChangeStatus(pr.Issue, doer, true); err != nil && !models.IsErrPullWasClosed(err) {
517+
if err = issue_service.ChangeStatus(pr.Issue, doer, true); err != nil && !models.IsErrPullWasClosed(err) && !models.IsErrDependenciesLeft(err) {
518518
errs = append(errs, err)
519519
}
520520
}

0 commit comments

Comments
 (0)