|
|
|
|
@ -28,7 +28,6 @@ import (
@@ -28,7 +28,6 @@ import (
|
|
|
|
|
"code.gitea.io/gitea/modules/gitrepo" |
|
|
|
|
"code.gitea.io/gitea/modules/globallock" |
|
|
|
|
"code.gitea.io/gitea/modules/graceful" |
|
|
|
|
"code.gitea.io/gitea/modules/json" |
|
|
|
|
"code.gitea.io/gitea/modules/log" |
|
|
|
|
repo_module "code.gitea.io/gitea/modules/repository" |
|
|
|
|
"code.gitea.io/gitea/modules/setting" |
|
|
|
|
@ -142,37 +141,9 @@ func NewPullRequest(ctx context.Context, opts *NewPullRequestOptions) error {
@@ -142,37 +141,9 @@ func NewPullRequest(ctx context.Context, opts *NewPullRequestOptions) error {
|
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
compareInfo, err := baseGitRepo.GetCompareInfo(pr.BaseRepo.RepoPath(), |
|
|
|
|
git.BranchPrefix+pr.BaseBranch, pr.GetGitRefName(), false, false) |
|
|
|
|
if err != nil { |
|
|
|
|
if _, err := CreatePushPullComment(ctx, issue.Poster, pr, git.BranchPrefix+pr.BaseBranch, pr.GetGitRefName(), false); err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
// It maybe an empty pull request. Only non-empty pull request need to create push comment
|
|
|
|
|
if len(compareInfo.Commits) > 0 { |
|
|
|
|
data := issues_model.PushActionContent{IsForcePush: false} |
|
|
|
|
data.CommitIDs = make([]string, 0, len(compareInfo.Commits)) |
|
|
|
|
for i := len(compareInfo.Commits) - 1; i >= 0; i-- { |
|
|
|
|
data.CommitIDs = append(data.CommitIDs, compareInfo.Commits[i].ID.String()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
dataJSON, err := json.Marshal(data) |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ops := &issues_model.CreateCommentOptions{ |
|
|
|
|
Type: issues_model.CommentTypePullRequestPush, |
|
|
|
|
Doer: issue.Poster, |
|
|
|
|
Repo: repo, |
|
|
|
|
Issue: pr.Issue, |
|
|
|
|
IsForcePush: false, |
|
|
|
|
Content: string(dataJSON), |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if _, err = issues_model.CreateComment(ctx, ops); err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if !pr.IsWorkInProgress(ctx) { |
|
|
|
|
reviewNotifiers, err = issue_service.PullRequestCodeOwnersReview(ctx, pr) |
|
|
|
|
@ -335,24 +306,42 @@ func ChangeTargetBranch(ctx context.Context, pr *issues_model.PullRequest, doer
@@ -335,24 +306,42 @@ func ChangeTargetBranch(ctx context.Context, pr *issues_model.PullRequest, doer
|
|
|
|
|
pr.CommitsAhead = divergence.Ahead |
|
|
|
|
pr.CommitsBehind = divergence.Behind |
|
|
|
|
|
|
|
|
|
if err := pr.UpdateColsIfNotMerged(ctx, "merge_base", "status", "conflicted_files", "changed_protected_files", "base_branch", "commits_ahead", "commits_behind"); err != nil { |
|
|
|
|
// add first push codes comment
|
|
|
|
|
baseGitRepo, err := gitrepo.OpenRepository(ctx, pr.BaseRepo) |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
defer baseGitRepo.Close() |
|
|
|
|
|
|
|
|
|
// Create comment
|
|
|
|
|
options := &issues_model.CreateCommentOptions{ |
|
|
|
|
Type: issues_model.CommentTypeChangeTargetBranch, |
|
|
|
|
Doer: doer, |
|
|
|
|
Repo: pr.Issue.Repo, |
|
|
|
|
Issue: pr.Issue, |
|
|
|
|
OldRef: oldBranch, |
|
|
|
|
NewRef: targetBranch, |
|
|
|
|
} |
|
|
|
|
if _, err = issues_model.CreateComment(ctx, options); err != nil { |
|
|
|
|
return fmt.Errorf("CreateChangeTargetBranchComment: %w", err) |
|
|
|
|
} |
|
|
|
|
return db.WithTx(ctx, func(ctx context.Context) error { |
|
|
|
|
if err := pr.UpdateColsIfNotMerged(ctx, "merge_base", "status", "conflicted_files", "changed_protected_files", "base_branch", "commits_ahead", "commits_behind"); err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return nil |
|
|
|
|
// Create comment
|
|
|
|
|
options := &issues_model.CreateCommentOptions{ |
|
|
|
|
Type: issues_model.CommentTypeChangeTargetBranch, |
|
|
|
|
Doer: doer, |
|
|
|
|
Repo: pr.Issue.Repo, |
|
|
|
|
Issue: pr.Issue, |
|
|
|
|
OldRef: oldBranch, |
|
|
|
|
NewRef: targetBranch, |
|
|
|
|
} |
|
|
|
|
if _, err = issues_model.CreateComment(ctx, options); err != nil { |
|
|
|
|
return fmt.Errorf("CreateChangeTargetBranchComment: %w", err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Delete all old push comments and insert new push comments
|
|
|
|
|
if _, err := db.GetEngine(ctx).Where("issue_id = ?", pr.IssueID). |
|
|
|
|
And("type = ?", issues_model.CommentTypePullRequestPush). |
|
|
|
|
NoAutoCondition(). |
|
|
|
|
Delete(new(issues_model.Comment)); err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_, err = CreatePushPullComment(ctx, doer, pr, git.BranchPrefix+pr.BaseBranch, pr.GetGitRefName(), false) |
|
|
|
|
return err |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func checkForInvalidation(ctx context.Context, requests issues_model.PullRequestList, repoID int64, doer *user_model.User, branch string) error { |
|
|
|
|
@ -413,7 +402,7 @@ func AddTestPullRequestTask(opts TestPullRequestOptions) {
@@ -413,7 +402,7 @@ func AddTestPullRequestTask(opts TestPullRequestOptions) {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
StartPullRequestCheckImmediately(ctx, pr) |
|
|
|
|
comment, err := CreatePushPullComment(ctx, opts.Doer, pr, opts.OldCommitID, opts.NewCommitID) |
|
|
|
|
comment, err := CreatePushPullComment(ctx, opts.Doer, pr, opts.OldCommitID, opts.NewCommitID, opts.IsForcePush) |
|
|
|
|
if err == nil && comment != nil { |
|
|
|
|
notify_service.PullRequestPushCommits(ctx, opts.Doer, pr, comment) |
|
|
|
|
} |
|
|
|
|
|