mirror of
https://github.com/go-gitea/gitea
synced 2025-12-07 13:28:25 +00:00
More improvements
This commit is contained in:
@@ -188,15 +188,20 @@ func UpdateIssuesCommit(ctx context.Context, doer *user_model.User, repo *repo_m
|
||||
continue
|
||||
}
|
||||
}
|
||||
isClosed := ref.Action == references.XRefActionCloses
|
||||
if isClosed && len(ref.TimeLog) > 0 {
|
||||
if err := issueAddTime(ctx, refIssue, doer, c.Timestamp, ref.TimeLog); err != nil {
|
||||
|
||||
closeOrReopen := ref.Action == references.XRefActionCloses
|
||||
refIssue.Repo = refRepo
|
||||
if closeOrReopen && !refIssue.IsClosed {
|
||||
if len(ref.TimeLog) > 0 {
|
||||
if err := issueAddTime(ctx, refIssue, doer, c.Timestamp, ref.TimeLog); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if err := CloseIssue(ctx, refIssue, doer, c.Sha1); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if isClosed && !refIssue.IsClosed {
|
||||
refIssue.Repo = refRepo
|
||||
if err := CloseIssue(ctx, refIssue, doer, c.Sha1); err != nil {
|
||||
} else if !closeOrReopen && refIssue.IsClosed {
|
||||
if err := ReopenIssue(ctx, refIssue, doer, c.Sha1); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
|
||||
// CloseIssue close and issue.
|
||||
func CloseIssue(ctx context.Context, issue *issues_model.Issue, doer *user_model.User, commitID string) error {
|
||||
comment, err := issues_model.ChangeIssueStatus(ctx, issue, doer, true)
|
||||
comment, err := issues_model.CloseIssue(ctx, issue, doer)
|
||||
if err != nil {
|
||||
if issues_model.IsErrDependenciesLeft(err) {
|
||||
if err := issues_model.FinishIssueStopwatchIfPossible(ctx, doer, issue); err != nil {
|
||||
@@ -36,15 +36,11 @@ func CloseIssue(ctx context.Context, issue *issues_model.Issue, doer *user_model
|
||||
// ReopenIssue reopen an issue.
|
||||
// FIXME: If some issues dependent this one are closed, should we also reopen them?
|
||||
func ReopenIssue(ctx context.Context, issue *issues_model.Issue, doer *user_model.User, commitID string) error {
|
||||
comment, err := issues_model.ChangeIssueStatus(ctx, issue, doer, false)
|
||||
comment, err := issues_model.ReopenIssue(ctx, issue, doer)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := issues_model.FinishIssueStopwatchIfPossible(ctx, doer, issue); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
notify_service.IssueChangeStatus(ctx, doer, commitID, issue, comment, false)
|
||||
|
||||
return nil
|
||||
|
||||
@@ -242,14 +242,18 @@ func handleCloseCrossReferences(ctx context.Context, pr *issues_model.PullReques
|
||||
if err = ref.Issue.LoadRepo(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
isClosed := ref.RefAction == references.XRefActionCloses
|
||||
if isClosed && !ref.Issue.IsClosed {
|
||||
closeOrReopen := ref.RefAction == references.XRefActionCloses
|
||||
if closeOrReopen && !ref.Issue.IsClosed {
|
||||
if err = issue_service.CloseIssue(ctx, ref.Issue, doer, pr.MergedCommitID); err != nil {
|
||||
// Allow ErrDependenciesLeft
|
||||
if !issues_model.IsErrDependenciesLeft(err) {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else if !closeOrReopen && ref.Issue.IsClosed {
|
||||
if err = issue_service.ReopenIssue(ctx, ref.Issue, doer, pr.MergedCommitID); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user