mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 15:04:00 +01:00 
			
		
		
		
	Merge 86750244748ed5e3adeaee5296fd68edba4ad1b9 into 3ab8ae5807775a81069005a5abbd20bacfa0a15f
This commit is contained in:
		
						commit
						ff93c545ce
					
				@ -1016,7 +1016,7 @@ func MergePullRequest(ctx *context.APIContext) {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := pull_service.Merge(ctx, pr, ctx.Doer, ctx.Repo.GitRepo, repo_model.MergeStyle(form.Do), form.HeadCommitID, message, false); err != nil {
 | 
			
		||||
	if err := pull_service.Merge(ctx, pr, ctx.Doer, repo_model.MergeStyle(form.Do), form.HeadCommitID, message, false); err != nil {
 | 
			
		||||
		if pull_service.IsErrInvalidMergeStyle(err) {
 | 
			
		||||
			ctx.APIError(http.StatusMethodNotAllowed, fmt.Errorf("%s is not allowed an allowed merge style for this repository", repo_model.MergeStyle(form.Do)))
 | 
			
		||||
		} else if pull_service.IsErrMergeConflicts(err) {
 | 
			
		||||
 | 
			
		||||
@ -1152,7 +1152,7 @@ func MergePullRequest(ctx *context.Context) {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := pull_service.Merge(ctx, pr, ctx.Doer, ctx.Repo.GitRepo, repo_model.MergeStyle(form.Do), form.HeadCommitID, message, false); err != nil {
 | 
			
		||||
	if err := pull_service.Merge(ctx, pr, ctx.Doer, repo_model.MergeStyle(form.Do), form.HeadCommitID, message, false); err != nil {
 | 
			
		||||
		if pull_service.IsErrInvalidMergeStyle(err) {
 | 
			
		||||
			ctx.JSONError(ctx.Tr("repo.pulls.invalid_merge_option"))
 | 
			
		||||
		} else if pull_service.IsErrMergeConflicts(err) {
 | 
			
		||||
 | 
			
		||||
@ -260,7 +260,7 @@ func handlePullRequestAutoMerge(pullID int64, sha string) {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := pull_service.Merge(ctx, pr, doer, baseGitRepo, scheduledPRM.MergeStyle, "", scheduledPRM.Message, true); err != nil {
 | 
			
		||||
	if err := pull_service.Merge(ctx, pr, doer, scheduledPRM.MergeStyle, "", scheduledPRM.Message, true); err != nil {
 | 
			
		||||
		log.Error("pull_service.Merge: %v", err)
 | 
			
		||||
		// FIXME: if merge failed, we should display some error message to the pull request page.
 | 
			
		||||
		// The resolution is add a new column on automerge table named `error_message` to store the error message and displayed
 | 
			
		||||
 | 
			
		||||
@ -220,7 +220,7 @@ func (err ErrInvalidMergeStyle) Unwrap() error {
 | 
			
		||||
 | 
			
		||||
// Merge merges pull request to base repository.
 | 
			
		||||
// Caller should check PR is ready to be merged (review and status checks)
 | 
			
		||||
func Merge(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.User, baseGitRepo *git.Repository, mergeStyle repo_model.MergeStyle, expectedHeadCommitID, message string, wasAutoMerged bool) error {
 | 
			
		||||
func Merge(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.User, mergeStyle repo_model.MergeStyle, expectedHeadCommitID, message string, wasAutoMerged bool) error {
 | 
			
		||||
	if err := pr.LoadBaseRepo(ctx); err != nil {
 | 
			
		||||
		log.Error("Unable to load base repo: %v", err)
 | 
			
		||||
		return fmt.Errorf("unable to load base repo: %w", err)
 | 
			
		||||
@ -668,7 +668,7 @@ func MergedManually(ctx context.Context, pr *issues_model.PullRequest, doer *use
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	notify_service.MergePullRequest(baseGitRepo.Ctx, doer, pr)
 | 
			
		||||
	notify_service.MergePullRequest(ctx, doer, pr)
 | 
			
		||||
	log.Info("manuallyMerged[%d]: Marked as manually merged into %s/%s by commit id: %s", pr.ID, pr.BaseRepo.Name, pr.BaseBranch, commitID)
 | 
			
		||||
 | 
			
		||||
	return handleCloseCrossReferences(ctx, pr, doer)
 | 
			
		||||
 | 
			
		||||
@ -262,7 +262,7 @@ func UpdateRelease(ctx context.Context, doer *user_model.User, gitRepo *git.Repo
 | 
			
		||||
	if rel.ID == 0 {
 | 
			
		||||
		return errors.New("UpdateRelease only accepts an exist release")
 | 
			
		||||
	}
 | 
			
		||||
	isTagCreated, err := createTag(gitRepo.Ctx, gitRepo, rel, "")
 | 
			
		||||
	isTagCreated, err := createTag(ctx, gitRepo, rel, "")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -325,17 +325,13 @@ func TestCantMergeConflict(t *testing.T) {
 | 
			
		||||
			BaseBranch: "base",
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		gitRepo, err := gitrepo.OpenRepository(t.Context(), repo1)
 | 
			
		||||
		assert.NoError(t, err)
 | 
			
		||||
 | 
			
		||||
		err = pull_service.Merge(t.Context(), pr, user1, gitRepo, repo_model.MergeStyleMerge, "", "CONFLICT", false)
 | 
			
		||||
		err := pull_service.Merge(t.Context(), pr, user1, repo_model.MergeStyleMerge, "", "CONFLICT", false)
 | 
			
		||||
		assert.Error(t, err, "Merge should return an error due to conflict")
 | 
			
		||||
		assert.True(t, pull_service.IsErrMergeConflicts(err), "Merge error is not a conflict error")
 | 
			
		||||
 | 
			
		||||
		err = pull_service.Merge(t.Context(), pr, user1, gitRepo, repo_model.MergeStyleRebase, "", "CONFLICT", false)
 | 
			
		||||
		err = pull_service.Merge(t.Context(), pr, user1, repo_model.MergeStyleRebase, "", "CONFLICT", false)
 | 
			
		||||
		assert.Error(t, err, "Merge should return an error due to conflict")
 | 
			
		||||
		assert.True(t, pull_service.IsErrRebaseConflicts(err), "Merge error is not a conflict error")
 | 
			
		||||
		gitRepo.Close()
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -423,8 +419,6 @@ func TestCantMergeUnrelated(t *testing.T) {
 | 
			
		||||
		session.MakeRequest(t, req, http.StatusCreated)
 | 
			
		||||
 | 
			
		||||
		// Now this PR could be marked conflict - or at least a race may occur - so drop down to pure code at this point...
 | 
			
		||||
		gitRepo, err := gitrepo.OpenRepository(t.Context(), repo1)
 | 
			
		||||
		assert.NoError(t, err)
 | 
			
		||||
		pr := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{
 | 
			
		||||
			HeadRepoID: repo1.ID,
 | 
			
		||||
			BaseRepoID: repo1.ID,
 | 
			
		||||
@ -432,10 +426,9 @@ func TestCantMergeUnrelated(t *testing.T) {
 | 
			
		||||
			BaseBranch: "base",
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		err = pull_service.Merge(t.Context(), pr, user1, gitRepo, repo_model.MergeStyleMerge, "", "UNRELATED", false)
 | 
			
		||||
		err = pull_service.Merge(t.Context(), pr, user1, repo_model.MergeStyleMerge, "", "UNRELATED", false)
 | 
			
		||||
		assert.Error(t, err, "Merge should return an error due to unrelated")
 | 
			
		||||
		assert.True(t, pull_service.IsErrMergeUnrelatedHistories(err), "Merge error is not a unrelated histories error")
 | 
			
		||||
		gitRepo.Close()
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -469,14 +462,8 @@ func TestFastForwardOnlyMerge(t *testing.T) {
 | 
			
		||||
			BaseBranch: "master",
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		gitRepo, err := git.OpenRepository(t.Context(), repo_model.RepoPath(user1.Name, repo1.Name))
 | 
			
		||||
		err := pull_service.Merge(t.Context(), pr, user1, repo_model.MergeStyleFastForwardOnly, "", "FAST-FORWARD-ONLY", false)
 | 
			
		||||
		assert.NoError(t, err)
 | 
			
		||||
 | 
			
		||||
		err = pull_service.Merge(t.Context(), pr, user1, gitRepo, repo_model.MergeStyleFastForwardOnly, "", "FAST-FORWARD-ONLY", false)
 | 
			
		||||
 | 
			
		||||
		assert.NoError(t, err)
 | 
			
		||||
 | 
			
		||||
		gitRepo.Close()
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -511,15 +498,9 @@ func TestCantFastForwardOnlyMergeDiverging(t *testing.T) {
 | 
			
		||||
			BaseBranch: "master",
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		gitRepo, err := git.OpenRepository(t.Context(), repo_model.RepoPath(user1.Name, repo1.Name))
 | 
			
		||||
		assert.NoError(t, err)
 | 
			
		||||
 | 
			
		||||
		err = pull_service.Merge(t.Context(), pr, user1, gitRepo, repo_model.MergeStyleFastForwardOnly, "", "DIVERGING", false)
 | 
			
		||||
 | 
			
		||||
		err := pull_service.Merge(t.Context(), pr, user1, repo_model.MergeStyleFastForwardOnly, "", "DIVERGING", false)
 | 
			
		||||
		assert.Error(t, err, "Merge should return an error due to being for a diverging branch")
 | 
			
		||||
		assert.True(t, pull_service.IsErrMergeDivergingFastForwardOnly(err), "Merge error is not a diverging fast-forward-only error")
 | 
			
		||||
 | 
			
		||||
		gitRepo.Close()
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user