[BUG] Don't overwrite protected branch accidentally

- If a user tries to create another protected branching rule that
specifies a set of branches already used by another rule, do not allow
it.
- Update the translation accordingly.
- Adds integration test.
- Resolves #2455
This commit is contained in:
Gusted 2024-02-25 19:50:46 +01:00
parent 6531d765a0
commit 1bab4358ac
No known key found for this signature in database
GPG key ID: FD821B732837125F
4 changed files with 57 additions and 5 deletions

View file

@ -132,12 +132,15 @@ func SettingsProtectedBranchPost(ctx *context.Context) {
}
}
} else {
// FIXME: If a new ProtectBranch has a duplicate RuleName, an error should be returned.
// Currently, if a new ProtectBranch with a duplicate RuleName is created, the existing ProtectBranch will be updated.
// But we cannot modify this logic now because many unit tests rely on it.
// Check if a rule already exists with this rulename, if so redirect to it.
protectBranch, err = git_model.GetProtectedBranchRuleByName(ctx, ctx.Repo.Repository.ID, f.RuleName)
if err != nil {
ctx.ServerError("GetProtectBranchOfRepoByName", err)
ctx.ServerError("GetProtectedBranchRuleByName", err)
return
}
if protectBranch != nil {
ctx.Flash.Error(ctx.Tr("repo.settings.protected_branch_duplicate_rule_name"))
ctx.Redirect(fmt.Sprintf("%s/settings/branches/edit?rule_name=%s", ctx.Repo.RepoLink, protectBranch.RuleName))
return
}
}