mirror of
https://github.com/go-gitea/gitea.git
synced 2026-05-14 17:27:39 +02:00
Backport #36650 by @lunny Fix #36464 Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
parent
e927a86586
commit
216cf96cd4
@ -397,10 +397,16 @@ func RenameBranch(ctx context.Context, repo *repo_model.Repository, from, to str
|
|||||||
|
|
||||||
if protectedBranch != nil {
|
if protectedBranch != nil {
|
||||||
// there is a protect rule for this branch
|
// there is a protect rule for this branch
|
||||||
protectedBranch.RuleName = to
|
existingRule, err := GetProtectedBranchRuleByName(ctx, repo.ID, to)
|
||||||
if _, err = sess.ID(protectedBranch.ID).Cols("branch_name").Update(protectedBranch); err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if existingRule == nil || existingRule.ID == protectedBranch.ID {
|
||||||
|
protectedBranch.RuleName = to
|
||||||
|
if _, err = sess.ID(protectedBranch.ID).Cols("branch_name").Update(protectedBranch); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// some glob protect rules may match this branch
|
// some glob protect rules may match this branch
|
||||||
protected, err := IsBranchProtected(ctx, repo.ID, from)
|
protected, err := IsBranchProtected(ctx, repo.ID, from)
|
||||||
|
|||||||
@ -159,6 +159,53 @@ func TestRenameBranch(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRenameBranchProtectedRuleConflict(t *testing.T) {
|
||||||
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||||
|
repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
|
||||||
|
master := unittest.AssertExistsAndLoadBean(t, &git_model.Branch{RepoID: repo1.ID, Name: "master"})
|
||||||
|
|
||||||
|
devBranch := &git_model.Branch{
|
||||||
|
RepoID: repo1.ID,
|
||||||
|
Name: "dev",
|
||||||
|
CommitID: master.CommitID,
|
||||||
|
CommitMessage: master.CommitMessage,
|
||||||
|
CommitTime: master.CommitTime,
|
||||||
|
PusherID: master.PusherID,
|
||||||
|
}
|
||||||
|
assert.NoError(t, db.Insert(t.Context(), devBranch))
|
||||||
|
|
||||||
|
pbDev := git_model.ProtectedBranch{
|
||||||
|
RepoID: repo1.ID,
|
||||||
|
RuleName: "dev",
|
||||||
|
CanPush: true,
|
||||||
|
}
|
||||||
|
assert.NoError(t, git_model.UpdateProtectBranch(t.Context(), repo1, &pbDev, git_model.WhitelistOptions{}))
|
||||||
|
|
||||||
|
pbMain := git_model.ProtectedBranch{
|
||||||
|
RepoID: repo1.ID,
|
||||||
|
RuleName: "main",
|
||||||
|
CanPush: true,
|
||||||
|
}
|
||||||
|
assert.NoError(t, git_model.UpdateProtectBranch(t.Context(), repo1, &pbMain, git_model.WhitelistOptions{}))
|
||||||
|
|
||||||
|
assert.NoError(t, git_model.RenameBranch(t.Context(), repo1, "dev", "main", func(ctx context.Context, isDefault bool) error {
|
||||||
|
return nil
|
||||||
|
}))
|
||||||
|
|
||||||
|
unittest.AssertNotExistsBean(t, &git_model.Branch{RepoID: repo1.ID, Name: "dev"})
|
||||||
|
unittest.AssertExistsAndLoadBean(t, &git_model.Branch{RepoID: repo1.ID, Name: "main"})
|
||||||
|
|
||||||
|
protectedDev, err := git_model.GetProtectedBranchRuleByName(t.Context(), repo1.ID, "dev")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NotNil(t, protectedDev)
|
||||||
|
assert.Equal(t, "dev", protectedDev.RuleName)
|
||||||
|
|
||||||
|
protectedMainByID, err := git_model.GetProtectedBranchRuleByID(t.Context(), repo1.ID, pbMain.ID)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NotNil(t, protectedMainByID)
|
||||||
|
assert.Equal(t, "main", protectedMainByID.RuleName)
|
||||||
|
}
|
||||||
|
|
||||||
func TestOnlyGetDeletedBranchOnCorrectRepo(t *testing.T) {
|
func TestOnlyGetDeletedBranchOnCorrectRepo(t *testing.T) {
|
||||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user