mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-14 18:24:14 +01:00
Replace #28625 Backport #28624 by lunny #28361 introduced `syncBranchToDB` in `CreateNewBranchFromCommit`. This PR will revert the change because it's unnecessary. Every push will already be checked by `syncBranchToDB`. This PR also created a test to ensure it's right.
This commit is contained in:
parent
f7cca2a290
commit
ff565a787f
2 changed files with 45 additions and 20 deletions
|
@ -281,28 +281,17 @@ func CreateNewBranchFromCommit(ctx context.Context, doer *user_model.User, repo
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return db.WithTx(ctx, func(ctx context.Context) error {
|
if err := git.Push(ctx, repo.RepoPath(), git.PushOptions{
|
||||||
commit, err := gitRepo.GetCommit(commitID)
|
Remote: repo.RepoPath(),
|
||||||
if err != nil {
|
Branch: fmt.Sprintf("%s:%s%s", commitID, git.BranchPrefix, branchName),
|
||||||
|
Env: repo_module.PushingEnvironment(doer, repo),
|
||||||
|
}); err != nil {
|
||||||
|
if git.IsErrPushOutOfDate(err) || git.IsErrPushRejected(err) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// database operation should be done before git operation so that we can rollback if git operation failed
|
return fmt.Errorf("push: %w", err)
|
||||||
if err := syncBranchToDB(ctx, repo.ID, doer.ID, branchName, commit); err != nil {
|
}
|
||||||
return err
|
return nil
|
||||||
}
|
|
||||||
|
|
||||||
if err := git.Push(ctx, repo.RepoPath(), git.PushOptions{
|
|
||||||
Remote: repo.RepoPath(),
|
|
||||||
Branch: fmt.Sprintf("%s:%s%s", commitID, git.BranchPrefix, branchName),
|
|
||||||
Env: repo_module.PushingEnvironment(doer, repo),
|
|
||||||
}); err != nil {
|
|
||||||
if git.IsErrPushOutOfDate(err) || git.IsErrPushRejected(err) {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return fmt.Errorf("push: %w", err)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// RenameBranch rename a branch
|
// RenameBranch rename a branch
|
||||||
|
|
|
@ -9,6 +9,8 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
auth_model "code.gitea.io/gitea/models/auth"
|
auth_model "code.gitea.io/gitea/models/auth"
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
|
git_model "code.gitea.io/gitea/models/git"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
api "code.gitea.io/gitea/modules/structs"
|
||||||
"code.gitea.io/gitea/tests"
|
"code.gitea.io/gitea/tests"
|
||||||
|
|
||||||
|
@ -212,3 +214,37 @@ func TestAPIBranchProtection(t *testing.T) {
|
||||||
testAPIDeleteBranch(t, "master", http.StatusForbidden)
|
testAPIDeleteBranch(t, "master", http.StatusForbidden)
|
||||||
testAPIDeleteBranch(t, "branch2", http.StatusNoContent)
|
testAPIDeleteBranch(t, "branch2", http.StatusNoContent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAPICreateBranchWithSyncBranches(t *testing.T) {
|
||||||
|
defer tests.PrepareTestEnv(t)()
|
||||||
|
|
||||||
|
branches, err := git_model.FindBranches(db.DefaultContext, git_model.FindBranchOptions{
|
||||||
|
RepoID: 1,
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Len(t, branches, 4)
|
||||||
|
|
||||||
|
// make a broke repository with no branch on database
|
||||||
|
_, err = db.DeleteByBean(db.DefaultContext, git_model.Branch{RepoID: 1})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
ctx := NewAPITestContext(t, "user2", "repo1", auth_model.AccessTokenScopeWriteRepository, auth_model.AccessTokenScopeWriteUser)
|
||||||
|
giteaURL.Path = ctx.GitPath()
|
||||||
|
|
||||||
|
testAPICreateBranch(t, ctx.Session, "user2", "repo1", "", "new_branch", http.StatusCreated)
|
||||||
|
})
|
||||||
|
|
||||||
|
branches, err = git_model.FindBranches(db.DefaultContext, git_model.FindBranchOptions{
|
||||||
|
RepoID: 1,
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Len(t, branches, 5)
|
||||||
|
|
||||||
|
branches, err = git_model.FindBranches(db.DefaultContext, git_model.FindBranchOptions{
|
||||||
|
RepoID: 1,
|
||||||
|
Keyword: "new_branch",
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Len(t, branches, 1)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue