Skip to content

Commit d81f831

Browse files
authored
Merge branch 'main' into lunny/refactor_updateAttachment
2 parents f9635a5 + d45456b commit d81f831

File tree

9 files changed

+70
-85
lines changed

9 files changed

+70
-85
lines changed

assets/go-licenses.json

Lines changed: 0 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ require (
2828
github.com/PuerkitoBio/goquery v1.10.0
2929
github.com/SaveTheRbtz/zstd-seekable-format-go/pkg v0.7.3
3030
github.com/alecthomas/chroma/v2 v2.14.0
31-
github.com/aws/aws-sdk-go v1.55.5
3231
github.com/aws/aws-sdk-go-v2/credentials v1.17.42
3332
github.com/aws/aws-sdk-go-v2/service/codecommit v1.27.3
3433
github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb

go.sum

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,6 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd
105105
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
106106
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
107107
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
108-
github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
109-
github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
110108
github.com/aws/aws-sdk-go-v2 v1.32.3 h1:T0dRlFBKcdaUPGNtkBSwHZxrtis8CQU17UpNBZYd0wk=
111109
github.com/aws/aws-sdk-go-v2 v1.32.3/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo=
112110
github.com/aws/aws-sdk-go-v2/credentials v1.17.42 h1:sBP0RPjBU4neGpIYyx8mkU2QqLPl5u9cmdTWVzIpHkM=
@@ -503,8 +501,6 @@ github.com/jessevdk/go-flags v1.6.1 h1:Cvu5U8UGrLay1rZfv/zP7iLpSHGUZ/Ou68T0iX1bB
503501
github.com/jessevdk/go-flags v1.6.1/go.mod h1:Mk8T1hIAWpOiJiHa9rJASDK2UGWji0EuPGBnNLMooyc=
504502
github.com/jhillyerd/enmime v1.3.0 h1:LV5kzfLidiOr8qRGIpYYmUZCnhrPbcFAnAFUnWn99rw=
505503
github.com/jhillyerd/enmime v1.3.0/go.mod h1:6c6jg5HdRRV2FtvVL69LjiX1M8oE0xDX9VEhV3oy4gs=
506-
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
507-
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
508504
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
509505
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
510506
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=

models/issues/issue_update.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func UpdateIssueCols(ctx context.Context, issue *Issue, cols ...string) error {
3434
return nil
3535
}
3636

37-
func changeIssueStatus(ctx context.Context, issue *Issue, doer *user_model.User, isClosed, isMergePull bool) (*Comment, error) {
37+
func ChangeIssueStatus(ctx context.Context, issue *Issue, doer *user_model.User, isClosed, isMergePull bool) (*Comment, error) {
3838
// Reload the issue
3939
currentIssue, err := GetIssueByID(ctx, issue.ID)
4040
if err != nil {
@@ -134,7 +134,7 @@ func CloseIssue(ctx context.Context, issue *Issue, doer *user_model.User) (*Comm
134134
}
135135
defer committer.Close()
136136

137-
comment, err := changeIssueStatus(ctx, issue, doer, true, false)
137+
comment, err := ChangeIssueStatus(ctx, issue, doer, true, false)
138138
if err != nil {
139139
return nil, err
140140
}
@@ -159,7 +159,7 @@ func ReopenIssue(ctx context.Context, issue *Issue, doer *user_model.User) (*Com
159159
}
160160
defer committer.Close()
161161

162-
comment, err := changeIssueStatus(ctx, issue, doer, false, false)
162+
comment, err := ChangeIssueStatus(ctx, issue, doer, false, false)
163163
if err != nil {
164164
return nil, err
165165
}

models/issues/pull.go

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -499,65 +499,6 @@ func (pr *PullRequest) IsFromFork() bool {
499499
return pr.HeadRepoID != pr.BaseRepoID
500500
}
501501

502-
// SetMerged sets a pull request to merged and closes the corresponding issue
503-
func (pr *PullRequest) SetMerged(ctx context.Context) (bool, error) {
504-
if pr.HasMerged {
505-
return false, fmt.Errorf("PullRequest[%d] already merged", pr.Index)
506-
}
507-
if pr.MergedCommitID == "" || pr.MergedUnix == 0 || pr.Merger == nil {
508-
return false, fmt.Errorf("Unable to merge PullRequest[%d], some required fields are empty", pr.Index)
509-
}
510-
511-
pr.HasMerged = true
512-
sess := db.GetEngine(ctx)
513-
514-
if _, err := sess.Exec("UPDATE `issue` SET `repo_id` = `repo_id` WHERE `id` = ?", pr.IssueID); err != nil {
515-
return false, err
516-
}
517-
518-
if _, err := sess.Exec("UPDATE `pull_request` SET `issue_id` = `issue_id` WHERE `id` = ?", pr.ID); err != nil {
519-
return false, err
520-
}
521-
522-
pr.Issue = nil
523-
if err := pr.LoadIssue(ctx); err != nil {
524-
return false, err
525-
}
526-
527-
if tmpPr, err := GetPullRequestByID(ctx, pr.ID); err != nil {
528-
return false, err
529-
} else if tmpPr.HasMerged {
530-
if pr.Issue.IsClosed {
531-
return false, nil
532-
}
533-
return false, fmt.Errorf("PullRequest[%d] already merged but it's associated issue [%d] is not closed", pr.Index, pr.IssueID)
534-
} else if pr.Issue.IsClosed {
535-
return false, fmt.Errorf("PullRequest[%d] already closed", pr.Index)
536-
}
537-
538-
if err := pr.Issue.LoadRepo(ctx); err != nil {
539-
return false, err
540-
}
541-
542-
if err := pr.Issue.Repo.LoadOwner(ctx); err != nil {
543-
return false, err
544-
}
545-
546-
if _, err := changeIssueStatus(ctx, pr.Issue, pr.Merger, true, true); err != nil {
547-
return false, fmt.Errorf("Issue.changeStatus: %w", err)
548-
}
549-
550-
// reset the conflicted files as there cannot be any if we're merged
551-
pr.ConflictedFiles = []string{}
552-
553-
// We need to save all of the data used to compute this merge as it may have already been changed by TestPatch. FIXME: need to set some state to prevent TestPatch from running whilst we are merging.
554-
if _, err := sess.Where("id = ?", pr.ID).Cols("has_merged, status, merge_base, merged_commit_id, merger_id, merged_unix, conflicted_files").Update(pr); err != nil {
555-
return false, fmt.Errorf("Failed to update pr[%d]: %w", pr.ID, err)
556-
}
557-
558-
return true, nil
559-
}
560-
561502
// NewPullRequest creates new pull request with labels for repository.
562503
func NewPullRequest(ctx context.Context, repo *repo_model.Repository, issue *Issue, labelIDs []int64, uuids []string, pr *PullRequest) (err error) {
563504
ctx, committer, err := db.TxContext(ctx)

routers/private/hook_post_receive.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ func handlePullRequestMerging(ctx *gitea_context.PrivateContext, opts *private.H
368368
if err := pull_model.DeleteScheduledAutoMerge(ctx, pr.ID); err != nil && !db.IsErrNotExist(err) {
369369
return fmt.Errorf("DeleteScheduledAutoMerge[%d]: %v", opts.PullRequestID, err)
370370
}
371-
if _, err := pr.SetMerged(ctx); err != nil {
371+
if _, err := pull_service.SetMerged(ctx, pr); err != nil {
372372
return fmt.Errorf("SetMerged failed: %s/%s Error: %v", ownerName, repoName, err)
373373
}
374374
return nil

services/migrations/codecommit.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ import (
1414
"code.gitea.io/gitea/modules/log"
1515
base "code.gitea.io/gitea/modules/migration"
1616
"code.gitea.io/gitea/modules/structs"
17+
"code.gitea.io/gitea/modules/util"
1718

1819
"github.com/aws/aws-sdk-go-v2/credentials"
1920
"github.com/aws/aws-sdk-go-v2/service/codecommit"
2021
"github.com/aws/aws-sdk-go-v2/service/codecommit/types"
21-
"github.com/aws/aws-sdk-go/aws"
2222
)
2323

2424
var (
@@ -94,7 +94,7 @@ func (c *CodeCommitDownloader) SetContext(ctx context.Context) {
9494
// GetRepoInfo returns a repository information
9595
func (c *CodeCommitDownloader) GetRepoInfo() (*base.Repository, error) {
9696
output, err := c.codeCommitClient.GetRepository(c.ctx, &codecommit.GetRepositoryInput{
97-
RepositoryName: aws.String(c.repoName),
97+
RepositoryName: util.ToPointer(c.repoName),
9898
})
9999
if err != nil {
100100
return nil, err
@@ -126,7 +126,7 @@ func (c *CodeCommitDownloader) GetComments(commentable base.Commentable) ([]*bas
126126
for {
127127
resp, err := c.codeCommitClient.GetCommentsForPullRequest(c.ctx, &codecommit.GetCommentsForPullRequestInput{
128128
NextToken: nextToken,
129-
PullRequestId: aws.String(strconv.FormatInt(commentable.GetForeignIndex(), 10)),
129+
PullRequestId: util.ToPointer(strconv.FormatInt(commentable.GetForeignIndex(), 10)),
130130
})
131131
if err != nil {
132132
return nil, false, err
@@ -171,7 +171,7 @@ func (c *CodeCommitDownloader) GetPullRequests(page, perPage int) ([]*base.PullR
171171
prs := make([]*base.PullRequest, 0, len(batch))
172172
for _, id := range batch {
173173
output, err := c.codeCommitClient.GetPullRequest(c.ctx, &codecommit.GetPullRequestInput{
174-
PullRequestId: aws.String(id),
174+
PullRequestId: util.ToPointer(id),
175175
})
176176
if err != nil {
177177
return nil, false, err
@@ -243,7 +243,7 @@ func (c *CodeCommitDownloader) getAllPullRequestIDs() ([]string, error) {
243243

244244
for {
245245
output, err := c.codeCommitClient.ListPullRequests(c.ctx, &codecommit.ListPullRequestsInput{
246-
RepositoryName: aws.String(c.repoName),
246+
RepositoryName: util.ToPointer(c.repoName),
247247
NextToken: nextToken,
248248
})
249249
if err != nil {

services/pull/check.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ func manuallyMerged(ctx context.Context, pr *issues_model.PullRequest) bool {
300300
pr.Merger = merger
301301
pr.MergerID = merger.ID
302302

303-
if merged, err := pr.SetMerged(ctx); err != nil {
303+
if merged, err := SetMerged(ctx, pr); err != nil {
304304
log.Error("%-v setMerged : %v", pr, err)
305305
return false
306306
} else if !merged {

services/pull/merge.go

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,7 @@ func MergedManually(ctx context.Context, pr *issues_model.PullRequest, doer *use
639639
pr.MergerID = doer.ID
640640

641641
var merged bool
642-
if merged, err = pr.SetMerged(ctx); err != nil {
642+
if merged, err = SetMerged(ctx, pr); err != nil {
643643
return err
644644
} else if !merged {
645645
return fmt.Errorf("SetMerged failed")
@@ -656,3 +656,62 @@ func MergedManually(ctx context.Context, pr *issues_model.PullRequest, doer *use
656656

657657
return handleCloseCrossReferences(ctx, pr, doer)
658658
}
659+
660+
// SetMerged sets a pull request to merged and closes the corresponding issue
661+
func SetMerged(ctx context.Context, pr *issues_model.PullRequest) (bool, error) {
662+
if pr.HasMerged {
663+
return false, fmt.Errorf("PullRequest[%d] already merged", pr.Index)
664+
}
665+
if pr.MergedCommitID == "" || pr.MergedUnix == 0 || pr.Merger == nil {
666+
return false, fmt.Errorf("unable to merge PullRequest[%d], some required fields are empty", pr.Index)
667+
}
668+
669+
pr.HasMerged = true
670+
sess := db.GetEngine(ctx)
671+
672+
if _, err := sess.Exec("UPDATE `issue` SET `repo_id` = `repo_id` WHERE `id` = ?", pr.IssueID); err != nil {
673+
return false, err
674+
}
675+
676+
if _, err := sess.Exec("UPDATE `pull_request` SET `issue_id` = `issue_id` WHERE `id` = ?", pr.ID); err != nil {
677+
return false, err
678+
}
679+
680+
pr.Issue = nil
681+
if err := pr.LoadIssue(ctx); err != nil {
682+
return false, err
683+
}
684+
685+
if tmpPr, err := issues_model.GetPullRequestByID(ctx, pr.ID); err != nil {
686+
return false, err
687+
} else if tmpPr.HasMerged {
688+
if pr.Issue.IsClosed {
689+
return false, nil
690+
}
691+
return false, fmt.Errorf("PullRequest[%d] already merged but it's associated issue [%d] is not closed", pr.Index, pr.IssueID)
692+
} else if pr.Issue.IsClosed {
693+
return false, fmt.Errorf("PullRequest[%d] already closed", pr.Index)
694+
}
695+
696+
if err := pr.Issue.LoadRepo(ctx); err != nil {
697+
return false, err
698+
}
699+
700+
if err := pr.Issue.Repo.LoadOwner(ctx); err != nil {
701+
return false, err
702+
}
703+
704+
if _, err := issues_model.ChangeIssueStatus(ctx, pr.Issue, pr.Merger, true, true); err != nil {
705+
return false, fmt.Errorf("ChangeIssueStatus: %w", err)
706+
}
707+
708+
// reset the conflicted files as there cannot be any if we're merged
709+
pr.ConflictedFiles = []string{}
710+
711+
// We need to save all of the data used to compute this merge as it may have already been changed by TestPatch. FIXME: need to set some state to prevent TestPatch from running whilst we are merging.
712+
if _, err := sess.Where("id = ?", pr.ID).Cols("has_merged, status, merge_base, merged_commit_id, merger_id, merged_unix, conflicted_files").Update(pr); err != nil {
713+
return false, fmt.Errorf("failed to update pr[%d]: %w", pr.ID, err)
714+
}
715+
716+
return true, nil
717+
}

0 commit comments

Comments
 (0)