Add API Endpoint for Branch Creation (#11607)

* [FEATURE] [API] Add Endpoint for Branch Creation

Issue: https://github.com/go-gitea/gitea/issues/11376

This commit introduces an API endpoint for branch creation.

The added route is POST /repos/{owner}/{repo}/branches.
A JSON with the name of the new branch and the name of the old branch is
required as parameters.

Signed-off-by: Terence Le Huu Phuong <terence@qwasar.io>

* Put all the logic into CreateBranch and removed CreateRepoBranch

* - Added the error ErrBranchDoesNotExist in error.go
- Made the CreateNewBranch function return an errBranchDoesNotExist error
when the OldBranch does not exist
- Made the CreateBranch API function checks that the repository is not
empty and that branch exists.

* - Added a resetFixtures helper function in integration_test.go to
fine-tune test env resetting
- Added api test for CreateBranch
- Used resetFixture instead of the more general prepareTestEnv in the
repo_branch_test CreateBranch tests

* Moved the resetFixtures call inside the loop for APICreateBranch function

* Put the prepareTestEnv back in repo_branch_test

* fix import order/sort api branch test

Co-authored-by: zeripath <art27@cantab.net>
This commit is contained in:
Terence Le Huu Phuong 2020-05-29 20:16:20 +02:00 committed by GitHub
parent f36104e410
commit 141d52cc0f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 276 additions and 1 deletions

View file

@ -2241,6 +2241,53 @@
"$ref": "#/responses/BranchList"
}
}
},
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"repository"
],
"summary": "Create a branch",
"operationId": "repoCreateBranch",
"parameters": [
{
"type": "string",
"description": "owner of the repo",
"name": "owner",
"in": "path",
"required": true
},
{
"type": "string",
"description": "name of the repo",
"name": "repo",
"in": "path",
"required": true
},
{
"name": "body",
"in": "body",
"schema": {
"$ref": "#/definitions/CreateBranchRepoOption"
}
}
],
"responses": {
"201": {
"$ref": "#/responses/Branch"
},
"404": {
"description": "The old branch does not exist."
},
"409": {
"description": "The branch with the same name already exists."
}
}
}
},
"/repos/{owner}/{repo}/branches/{branch}": {
@ -10886,6 +10933,28 @@
},
"x-go-package": "code.gitea.io/gitea/modules/structs"
},
"CreateBranchRepoOption": {
"description": "CreateBranchRepoOption options when creating a branch in a repository",
"type": "object",
"required": [
"new_branch_name"
],
"properties": {
"new_branch_name": {
"description": "Name of the branch to create",
"type": "string",
"uniqueItems": true,
"x-go-name": "BranchName"
},
"old_branch_name": {
"description": "Name of the old branch to create from",
"type": "string",
"uniqueItems": true,
"x-go-name": "OldBranchName"
}
},
"x-go-package": "code.gitea.io/gitea/modules/structs"
},
"CreateEmailOption": {
"description": "CreateEmailOption options when creating email addresses",
"type": "object",