diff --git a/services/issue/status.go b/services/issue/status.go index 5b8d21274d688..64fbccd26a8a7 100644 --- a/services/issue/status.go +++ b/services/issue/status.go @@ -8,6 +8,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/db" user_model "code.gitea.io/gitea/models/user" + "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/notification" ) @@ -15,10 +16,9 @@ import ( func ChangeStatus(issue *models.Issue, doer *user_model.User, closed bool) error { comment, err := issue.ChangeStatus(doer, closed) if err != nil { - // Don't return an error when dependencies are open as this would let the push fail - if models.IsErrDependenciesLeft(err) { - if closed { - return models.FinishIssueStopwatchIfPossible(db.DefaultContext, doer, issue) + if models.IsErrDependenciesLeft(err) && closed { + if err := models.FinishIssueStopwatchIfPossible(db.DefaultContext, doer, issue); err != nil { + log.Error("Unable to stop stopwatch for issue[%d]#%d: %v", issue.ID, issue.Index, err) } } return err diff --git a/services/pull/merge.go b/services/pull/merge.go index 34cab2fd71060..f6a6415bff77a 100644 --- a/services/pull/merge.go +++ b/services/pull/merge.go @@ -105,7 +105,10 @@ func Merge(pr *models.PullRequest, doer *user_model.User, baseGitRepo *git.Repos close := ref.RefAction == references.XRefActionCloses if close != ref.Issue.IsClosed { if err = issue_service.ChangeStatus(ref.Issue, doer, close); err != nil { - return err + // Allow ErrDependenciesLeft + if !models.IsErrDependenciesLeft(err) { + return err + } } } } diff --git a/services/pull/pull.go b/services/pull/pull.go index c1844372ea0cc..db3533ebe4252 100644 --- a/services/pull/pull.go +++ b/services/pull/pull.go @@ -514,7 +514,7 @@ func CloseBranchPulls(doer *user_model.User, repoID int64, branch string) error var errs errlist 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) } }