Skip to content

[suggest] change merge strategy: do not check write access if user in merge white list #10935

@everhopingandwaiting

Description

@everhopingandwaiting
  • Gitea version (or commit ref): 1.12.0+dev-82-g3723b0647
  • Git version: 2.24
  • Operating system: arch linux
  • Database (use [x]):
    • PostgreSQL
    • MySQL
    • MSSQL
    • SQLite
  • Can you reproduce the bug at https://try.gitea.io:
    • Yes (provide example URL)
    • No
    • Not relevant
  • Log gist:

Description

func IsUserAllowedToMerge(pr *models.PullRequest, p models.Permission, user *models.User) (bool, error) {

before

// IsUserAllowedToMerge check if user is allowed to merge PR with given permissions and branch protections
func IsUserAllowedToMerge(pr *models.PullRequest, p models.Permission, user *models.User) (bool, error) {
	if !p.CanWrite(models.UnitTypeCode) {
		return false, nil
	}

	err := pr.LoadProtectedBranch()
	if err != nil {
		return false, err
	}

	if pr.ProtectedBranch == nil || pr.ProtectedBranch.IsUserMergeWhitelisted(user.ID) {
		return true, nil
	}

	return false, nil
}

atter:

// IsUserAllowedToMerge check if user is allowed to merge PR with given permissions and branch protections
func IsUserAllowedToMerge(pr *models.PullRequest, p models.Permission, user *models.User) (bool, error) {
	//if !p.CanWrite(models.UnitTypeCode) {
	//	return false, nil
	//}

	err := pr.LoadProtectedBranch()
	if err != nil {
		return false, err
	}

	if (p.CanWrite(models.UnitTypeCode) && pr.ProtectedBranch == nil) || pr.ProtectedBranch.IsUserMergeWhitelisted(user.ID) {
		return true, nil
	}

	return false, nil
}

remove Route verification

m.Post("/merge", context.RepoMustNotBeArchived(), /*reqRepoPullsWriter,*/ bindIgnErr(auth.MergePullRequestForm{}), repo.MergePullRequest)

...

Screenshots

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    type/proposalThe new feature has not been accepted yet but needs to be discussed first.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions