Skip to content

Commit a6922a3

Browse files
committed
TODO
1 parent 309b147 commit a6922a3

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

services/pull/merge.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -547,11 +547,15 @@ var escapedSymbols = regexp.MustCompile(`([*[?! \\])`)
547547

548548
// IsUserAllowedToMerge check if user is allowed to merge PR with given permissions and branch protections
549549
func IsUserAllowedToMerge(ctx context.Context, pr *issues_model.PullRequest, p access_model.Permission, user *user_model.User) (bool, error) {
550+
return isUserAllowedToMergeRepoBranch(ctx, pr.BaseRepoID, pr.BaseBranch, p, user)
551+
}
552+
553+
func isUserAllowedToMergeRepoBranch(ctx context.Context, repoID int64, branch string, p access_model.Permission, user *user_model.User) (bool, error) {
550554
if user == nil {
551555
return false, nil
552556
}
553557

554-
pb, err := git_model.GetFirstMatchProtectedBranchRule(ctx, pr.BaseRepoID, pr.BaseBranch)
558+
pb, err := git_model.GetFirstMatchProtectedBranchRule(ctx, repoID, branch)
555559
if err != nil {
556560
return false, err
557561
}

services/pull/update.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ func IsUserAllowedToUpdate(ctx context.Context, pull *issues_model.PullRequest,
121121
return false, false, err
122122
}
123123

124+
// TODO: why use base repo's unit?
124125
prUnit, err := pull.BaseRepo.GetUnit(ctx, unit.TypePullRequests)
125126
if err != nil {
126127
if repo_model.IsErrUnitTypeNotExist(err) {
@@ -155,6 +156,37 @@ func IsUserAllowedToUpdate(ctx context.Context, pull *issues_model.PullRequest,
155156
// if merge is not allowed, rebase is also not allowed
156157
rebaseAllowed = rebaseAllowed && mergeAllowed
157158

159+
/*
160+
// TODO: revert to old logic with isUserAllowedToMergeRepoBranch
161+
// If branch protected, disable rebase unless user is whitelisted to force push (which extends regular push)
162+
if pb != nil {
163+
pb.Repo = pull.BaseRepo
164+
if !pb.CanUserForcePush(ctx, user) {
165+
rebaseAllowed = false
166+
}
167+
168+
}
169+
170+
baseRepoPerm, err := access_model.GetUserRepoPermission(ctx, pull.BaseRepo, user)
171+
if err != nil {
172+
return false, false, err
173+
}
174+
175+
mergeAllowed, err = IsUserAllowedToMerge(ctx, pr, headRepoPerm, user)
176+
if err != nil {
177+
return false, false, err
178+
}
179+
180+
if pull.AllowMaintainerEdit {
181+
mergeAllowedMaintainer, err := IsUserAllowedToMerge(ctx, pr, baseRepoPerm, user)
182+
if err != nil {
183+
return false, false, err
184+
}
185+
186+
mergeAllowed = mergeAllowed || mergeAllowedMaintainer
187+
}
188+
*/
189+
158190
return mergeAllowed, rebaseAllowed, nil
159191
}
160192

0 commit comments

Comments
 (0)