Browse Source

Minor fix for #2506

tags/v0.9.99
Unknwon 8 years ago
parent
commit
995487e822
4 changed files with 55 additions and 40 deletions
  1. 20
    0
      models/error.go
  2. 0
    14
      models/repo.go
  3. 19
    5
      models/repo_branch.go
  4. 16
    21
      routers/api/v1/repo/branch.go

+ 20
- 0
models/error.go View File

@@ -392,6 +392,26 @@ func (err ErrReleaseNotExist) Error() string {
return fmt.Sprintf("Release tag does not exist [id: %d, tag_name: %s]", err.ID, err.TagName)
}

// __________ .__
// \______ \____________ ____ ____ | |__
// | | _/\_ __ \__ \ / \_/ ___\| | \
// | | \ | | \// __ \| | \ \___| Y \
// |______ / |__| (____ /___| /\___ >___| /
// \/ \/ \/ \/ \/

type ErrBranchNotExist struct {
Name string
}

func IsErrBranchNotExist(err error) bool {
_, ok := err.(ErrBranchNotExist)
return ok
}

func (err ErrBranchNotExist) Error() string {
return fmt.Sprintf("Branch does not exist [name: %s]", err.Name)
}

// __ __ ___. .__ __
// / \ / \ ____\_ |__ | |__ ____ ____ | | __
// \ \/\/ // __ \| __ \| | \ / _ \ / _ \| |/ /

+ 0
- 14
models/repo.go View File

@@ -288,20 +288,6 @@ func (repo *Repository) GetMirror() (err error) {
return err
}

func (repo *Repository) GetBranch(br string) (*Branch, error) {
if(!git.IsBranchExist(repo.RepoPath(), br)){
return nil, fmt.Errorf("Branch does not exist: %s", br);
}
return &Branch{
Path: repo.RepoPath(),
Name: br,
},nil
}

func (repo *Repository) GetBranches() ([]*Branch, error) {
return GetBranchesByPath(repo.RepoPath())
}

func (repo *Repository) GetBaseRepo() (err error) {
if !repo.IsFork {
return nil

+ 19
- 5
models/repo_branch.go View File

@@ -9,8 +9,8 @@ import (
)

type Branch struct {
Path string
Name string
Path string
Name string
}

func GetBranchesByPath(path string) ([]*Branch, error) {
@@ -24,14 +24,28 @@ func GetBranchesByPath(path string) ([]*Branch, error) {
return nil, err
}

Branches := make([]*Branch, len(brs))
branches := make([]*Branch, len(brs))
for i := range brs {
Branches[i] = &Branch{
branches[i] = &Branch{
Path: path,
Name: brs[i],
}
}
return Branches, nil
return branches, nil
}

func (repo *Repository) GetBranch(br string) (*Branch, error) {
if !git.IsBranchExist(repo.RepoPath(), br) {
return nil, &ErrBranchNotExist{br}
}
return &Branch{
Path: repo.RepoPath(),
Name: br,
}, nil
}

func (repo *Repository) GetBranches() ([]*Branch, error) {
return GetBranchesByPath(repo.RepoPath())
}

func (br *Branch) GetCommit() (*git.Commit, error) {

+ 16
- 21
routers/api/v1/repo/branch.go View File

@@ -11,45 +11,40 @@ import (
"github.com/gogits/gogs/routers/api/v1/convert"
)

// Temporary: https://gist.github.com/sapk/df64347ff218baf4a277#get-a-branch
// https://github.com/gogits/go-gogs-client/wiki/Repositories-Branches#get-a-branch
// https://github.com/gogits/go-gogs-client/wiki/Repositories#get-branch
func GetBranch(ctx *middleware.Context) {
// Getting the branch requested
branch, err := ctx.Repo.Repository.GetBranch(ctx.Params(":branchname"))
if err != nil {
ctx.APIError(500, "Repository.GetBranch", err)
ctx.APIError(500, "GetBranch", err)
return
}
// Getting the last commit of the branch
c, err := branch.GetCommit()
if err != nil {
ctx.APIError(500, "Branch.GetCommit", err)
ctx.APIError(500, "GetCommit", err)
return
}
// Converting to API format and send payload
ctx.JSON(200, convert.ToApiBranch(branch,c))
ctx.JSON(200, convert.ToApiBranch(branch, c))
}

// Temporary: https://gist.github.com/sapk/df64347ff218baf4a277#list-branches
// https://github.com/gogits/go-gogs-client/wiki/Repositories-Branches#list-branches
// https://github.com/gogits/go-gogs-client/wiki/Repositories#list-branches
func ListBranches(ctx *middleware.Context) {
// Listing of branches
Branches, err := ctx.Repo.Repository.GetBranches()
branches, err := ctx.Repo.Repository.GetBranches()
if err != nil {
ctx.APIError(500, "Repository.GetBranches", err)
ctx.APIError(500, "GetBranches", err)
return
}
// Getting the last commit of each branch
apiBranches := make([]*api.Branch, len(Branches))
for i := range Branches {
c, err := Branches[i].GetCommit()
apiBranches := make([]*api.Branch, len(branches))
for i := range branches {
c, err := branches[i].GetCommit()
if err != nil {
ctx.APIError(500, "Branch.GetCommit", err)
ctx.APIError(500, "GetCommit", err)
return
}
// Converting to API format
apiBranches[i] = convert.ToApiBranch(Branches[i],c)
apiBranches[i] = convert.ToApiBranch(branches[i], c)
}
// Sending the payload
ctx.JSON(200, &apiBranches)
}

Loading…
Cancel
Save