aboutsummaryrefslogtreecommitdiffstats
path: root/services/pull
diff options
context:
space:
mode:
authorIng. Jaroslav Šafka <devel@safka.org>2022-07-13 10:22:51 +0200
committerGitHub <noreply@github.com>2022-07-13 16:22:51 +0800
commit8420c1bf4c46a59973d30af5114216918d0f60cd (patch)
treeecbc9df280a2be760f6d37853d78c62997af5fe0 /services/pull
parentb7c6ec91bac5ab0a5382f99a72753574dbc41745 (diff)
downloadgitea-8420c1bf4c46a59973d30af5114216918d0f60cd.tar.gz
gitea-8420c1bf4c46a59973d30af5114216918d0f60cd.zip
Fix checks in PR for empty commits #19603 (#20290)
* Fixes issue #19603 (Not able to merge commit in PR when branches content is same, but different commit id) * fill HeadCommitID in PullRequest * compare real commits ID as check for merging * based on @zeripath patch in #19738
Diffstat (limited to 'services/pull')
-rw-r--r--services/pull/check.go2
-rw-r--r--services/pull/patch.go8
2 files changed, 9 insertions, 1 deletions
diff --git a/services/pull/check.go b/services/pull/check.go
index 6621a281fa..288f4dc0b7 100644
--- a/services/pull/check.go
+++ b/services/pull/check.go
@@ -89,7 +89,7 @@ func CheckPullMergable(stdCtx context.Context, doer *user_model.User, perm *acce
return ErrIsWorkInProgress
}
- if !pr.CanAutoMerge() {
+ if !pr.CanAutoMerge() && !pr.IsEmpty() {
return ErrNotMergableState
}
diff --git a/services/pull/patch.go b/services/pull/patch.go
index c7a69501c3..bb09acc89f 100644
--- a/services/pull/patch.go
+++ b/services/pull/patch.go
@@ -87,6 +87,14 @@ func TestPatch(pr *issues_model.PullRequest) error {
}
}
pr.MergeBase = strings.TrimSpace(pr.MergeBase)
+ if pr.HeadCommitID, err = gitRepo.GetRefCommitID(git.BranchPrefix + "tracking"); err != nil {
+ return fmt.Errorf("GetBranchCommitID: can't find commit ID for head: %w", err)
+ }
+
+ if pr.HeadCommitID == pr.MergeBase {
+ pr.Status = issues_model.PullRequestStatusAncestor
+ return nil
+ }
// 2. Check for conflicts
if conflicts, err := checkConflicts(ctx, pr, gitRepo, tmpBasePath); err != nil || conflicts || pr.Status == issues_model.PullRequestStatusEmpty {