mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-22 05:15:22 +02:00
Only request code owner when syncing commits files ownered by the code owners.
This commit is contained in:
parent
fb1fb03499
commit
b31d067d72
@ -48,6 +48,10 @@ func IsCodeOwnerFile(f string) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func PullRequestCodeOwnersReview(ctx context.Context, pr *issues_model.PullRequest) ([]*ReviewRequestNotifier, error) {
|
func PullRequestCodeOwnersReview(ctx context.Context, pr *issues_model.PullRequest) ([]*ReviewRequestNotifier, error) {
|
||||||
|
return PullRequestCodeOwnersReviewSpecialCommits(ctx, pr, "", "")
|
||||||
|
}
|
||||||
|
|
||||||
|
func PullRequestCodeOwnersReviewSpecialCommits(ctx context.Context, pr *issues_model.PullRequest, startCommitID, endCommitID string) ([]*ReviewRequestNotifier, error) {
|
||||||
if err := pr.LoadIssue(ctx); err != nil {
|
if err := pr.LoadIssue(ctx); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -78,7 +82,6 @@ func PullRequestCodeOwnersReview(ctx context.Context, pr *issues_model.PullReque
|
|||||||
}
|
}
|
||||||
|
|
||||||
var data string
|
var data string
|
||||||
|
|
||||||
for _, file := range codeOwnerFiles {
|
for _, file := range codeOwnerFiles {
|
||||||
if blob, err := commit.GetBlobByPath(file); err == nil {
|
if blob, err := commit.GetBlobByPath(file); err == nil {
|
||||||
data, err = blob.GetBlobContent(setting.UI.MaxDisplayFileSize)
|
data, err = blob.GetBlobContent(setting.UI.MaxDisplayFileSize)
|
||||||
@ -87,18 +90,28 @@ func PullRequestCodeOwnersReview(ctx context.Context, pr *issues_model.PullReque
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if data == "" {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
rules, _ := issues_model.GetCodeOwnersFromContent(ctx, data)
|
rules, _ := issues_model.GetCodeOwnersFromContent(ctx, data)
|
||||||
|
if len(rules) == 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
// get the mergebase
|
if startCommitID == "" && endCommitID == "" {
|
||||||
mergeBase, err := getMergeBase(repo, pr, git.BranchPrefix+pr.BaseBranch, pr.GetGitRefName())
|
// get the mergebase
|
||||||
if err != nil {
|
mergeBase, err := getMergeBase(repo, pr, git.BranchPrefix+pr.BaseBranch, pr.GetGitRefName())
|
||||||
return nil, err
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
startCommitID = mergeBase
|
||||||
|
endCommitID = pr.GetGitRefName()
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/go-gitea/gitea/issues/29763, we need to get the files changed
|
// https://github.com/go-gitea/gitea/issues/29763, we need to get the files changed
|
||||||
// between the merge base and the head commit but not the base branch and the head commit
|
// between the merge base and the head commit but not the base branch and the head commit
|
||||||
changedFiles, err := repo.GetFilesChangedBetween(mergeBase, pr.GetGitRefName())
|
changedFiles, err := repo.GetFilesChangedBetween(startCommitID, endCommitID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -211,7 +211,7 @@ func Merge(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.U
|
|||||||
}
|
}
|
||||||
defer releaser()
|
defer releaser()
|
||||||
defer func() {
|
defer func() {
|
||||||
go AddTestPullRequestTask(doer, pr.BaseRepo.ID, pr.BaseBranch, false, "", "")
|
go AddTestPullRequestTask(doer, pr.BaseRepo.ID, pr.BaseBranch, false, false, "", "")
|
||||||
}()
|
}()
|
||||||
|
|
||||||
_, err = doMergeAndPush(ctx, pr, doer, mergeStyle, expectedHeadCommitID, message, repo_module.PushTriggerPRMergeToBase)
|
_, err = doMergeAndPush(ctx, pr, doer, mergeStyle, expectedHeadCommitID, message, repo_module.PushTriggerPRMergeToBase)
|
||||||
|
@ -374,7 +374,7 @@ func checkForInvalidation(ctx context.Context, requests issues_model.PullRequest
|
|||||||
|
|
||||||
// AddTestPullRequestTask adds new test tasks by given head/base repository and head/base branch,
|
// AddTestPullRequestTask adds new test tasks by given head/base repository and head/base branch,
|
||||||
// and generate new patch for testing as needed.
|
// and generate new patch for testing as needed.
|
||||||
func AddTestPullRequestTask(doer *user_model.User, repoID int64, branch string, isSync bool, oldCommitID, newCommitID string) {
|
func AddTestPullRequestTask(doer *user_model.User, repoID int64, branch string, isSync, isForPush bool, oldCommitID, newCommitID string) {
|
||||||
log.Trace("AddTestPullRequestTask [head_repo_id: %d, head_branch: %s]: finding pull requests", repoID, branch)
|
log.Trace("AddTestPullRequestTask [head_repo_id: %d, head_branch: %s]: finding pull requests", repoID, branch)
|
||||||
graceful.GetManager().RunWithShutdownContext(func(ctx context.Context) {
|
graceful.GetManager().RunWithShutdownContext(func(ctx context.Context) {
|
||||||
// There is no sensible way to shut this down ":-("
|
// There is no sensible way to shut this down ":-("
|
||||||
@ -454,10 +454,16 @@ func AddTestPullRequestTask(doer *user_model.User, repoID int64, branch string,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !pr.IsWorkInProgress(ctx) {
|
if !pr.IsWorkInProgress(ctx) {
|
||||||
reviewNotifiers, err := issue_service.PullRequestCodeOwnersReview(ctx, pr)
|
var reviewNotifiers []*issue_service.ReviewRequestNotifier
|
||||||
|
if isForPush {
|
||||||
|
reviewNotifiers, err = issue_service.PullRequestCodeOwnersReview(ctx, pr)
|
||||||
|
} else {
|
||||||
|
reviewNotifiers, err = issue_service.PullRequestCodeOwnersReviewSpecialCommits(ctx, pr, oldCommitID, newCommitID)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("PullRequestCodeOwnersReview: %v", err)
|
log.Error("PullRequestCodeOwnersReview: %v", err)
|
||||||
} else {
|
}
|
||||||
|
if len(reviewNotifiers) > 0 {
|
||||||
issue_service.ReviewRequestNotify(ctx, pr.Issue, doer, reviewNotifiers)
|
issue_service.ReviewRequestNotify(ctx, pr.Issue, doer, reviewNotifiers)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ func Update(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.
|
|||||||
|
|
||||||
if rebase {
|
if rebase {
|
||||||
defer func() {
|
defer func() {
|
||||||
go AddTestPullRequestTask(doer, pr.BaseRepo.ID, pr.BaseBranch, false, "", "")
|
go AddTestPullRequestTask(doer, pr.BaseRepo.ID, pr.BaseBranch, false, false, "", "")
|
||||||
}()
|
}()
|
||||||
|
|
||||||
return updateHeadByRebaseOnToBase(ctx, pr, doer)
|
return updateHeadByRebaseOnToBase(ctx, pr, doer)
|
||||||
@ -83,7 +83,7 @@ func Update(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.
|
|||||||
_, err = doMergeAndPush(ctx, reversePR, doer, repo_model.MergeStyleMerge, "", message, repository.PushTriggerPRUpdateWithBase)
|
_, err = doMergeAndPush(ctx, reversePR, doer, repo_model.MergeStyleMerge, "", message, repository.PushTriggerPRUpdateWithBase)
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
go AddTestPullRequestTask(doer, reversePR.HeadRepo.ID, reversePR.HeadBranch, false, "", "")
|
go AddTestPullRequestTask(doer, reversePR.HeadRepo.ID, reversePR.HeadBranch, false, false, "", "")
|
||||||
}()
|
}()
|
||||||
|
|
||||||
return err
|
return err
|
||||||
|
@ -166,7 +166,6 @@ func pushUpdates(optsList []*repo_module.PushUpdateOptions) error {
|
|||||||
branch := opts.RefFullName.BranchName()
|
branch := opts.RefFullName.BranchName()
|
||||||
if !opts.IsDelRef() {
|
if !opts.IsDelRef() {
|
||||||
log.Trace("TriggerTask '%s/%s' by %s", repo.Name, branch, pusher.Name)
|
log.Trace("TriggerTask '%s/%s' by %s", repo.Name, branch, pusher.Name)
|
||||||
go pull_service.AddTestPullRequestTask(pusher, repo.ID, branch, true, opts.OldCommitID, opts.NewCommitID)
|
|
||||||
|
|
||||||
newCommit, err := gitRepo.GetCommit(opts.NewCommitID)
|
newCommit, err := gitRepo.GetCommit(opts.NewCommitID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -208,6 +207,9 @@ func pushUpdates(optsList []*repo_module.PushUpdateOptions) error {
|
|||||||
log.Error("IsForcePush %s:%s failed: %v", repo.FullName(), branch, err)
|
log.Error("IsForcePush %s:%s failed: %v", repo.FullName(), branch, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// only update branch can trigger pull request task because the pull request hasn't been created yet when creaing a branch
|
||||||
|
go pull_service.AddTestPullRequestTask(pusher, repo.ID, branch, true, isForcePush, opts.OldCommitID, opts.NewCommitID)
|
||||||
|
|
||||||
if isForcePush {
|
if isForcePush {
|
||||||
log.Trace("Push %s is a force push", opts.NewCommitID)
|
log.Trace("Push %s is a force push", opts.NewCommitID)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user