Browse Source

Minor fix for #2506

pull/2528/head
Unknwon 9 years ago
parent
commit
995487e822
  1. 20
      models/error.go
  2. 14
      models/repo.go
  3. 20
      models/repo_branch.go
  4. 35
      routers/api/v1/repo/branch.go

20
models/error.go

@ -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) 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)
}
// __ __ ___. .__ __ // __ __ ___. .__ __
// / \ / \ ____\_ |__ | |__ ____ ____ | | __ // / \ / \ ____\_ |__ | |__ ____ ____ | | __
// \ \/\/ // __ \| __ \| | \ / _ \ / _ \| |/ / // \ \/\/ // __ \| __ \| | \ / _ \ / _ \| |/ /

14
models/repo.go

@ -288,20 +288,6 @@ func (repo *Repository) GetMirror() (err error) {
return err 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) { func (repo *Repository) GetBaseRepo() (err error) {
if !repo.IsFork { if !repo.IsFork {
return nil return nil

20
models/repo_branch.go

@ -24,14 +24,28 @@ func GetBranchesByPath(path string) ([]*Branch, error) {
return nil, err return nil, err
} }
Branches := make([]*Branch, len(brs)) branches := make([]*Branch, len(brs))
for i := range brs { for i := range brs {
Branches[i] = &Branch{ branches[i] = &Branch{
Path: path, Path: path,
Name: brs[i], 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) { func (br *Branch) GetCommit() (*git.Commit, error) {

35
routers/api/v1/repo/branch.go

@ -11,45 +11,40 @@ import (
"github.com/gogits/gogs/routers/api/v1/convert" "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#get-branch
// https://github.com/gogits/go-gogs-client/wiki/Repositories-Branches#get-a-branch
func GetBranch(ctx *middleware.Context) { func GetBranch(ctx *middleware.Context) {
// Getting the branch requested
branch, err := ctx.Repo.Repository.GetBranch(ctx.Params(":branchname")) branch, err := ctx.Repo.Repository.GetBranch(ctx.Params(":branchname"))
if err != nil { if err != nil {
ctx.APIError(500, "Repository.GetBranch", err) ctx.APIError(500, "GetBranch", err)
return return
} }
// Getting the last commit of the branch
c, err := branch.GetCommit() c, err := branch.GetCommit()
if err != nil { if err != nil {
ctx.APIError(500, "Branch.GetCommit", err) ctx.APIError(500, "GetCommit", err)
return 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#list-branches
// https://github.com/gogits/go-gogs-client/wiki/Repositories-Branches#list-branches
func ListBranches(ctx *middleware.Context) { func ListBranches(ctx *middleware.Context) {
// Listing of branches branches, err := ctx.Repo.Repository.GetBranches()
Branches, err := ctx.Repo.Repository.GetBranches()
if err != nil { if err != nil {
ctx.APIError(500, "Repository.GetBranches", err) ctx.APIError(500, "GetBranches", err)
return return
} }
// Getting the last commit of each branch
apiBranches := make([]*api.Branch, len(Branches)) apiBranches := make([]*api.Branch, len(branches))
for i := range Branches { for i := range branches {
c, err := Branches[i].GetCommit() c, err := branches[i].GetCommit()
if err != nil { if err != nil {
ctx.APIError(500, "Branch.GetCommit", err) ctx.APIError(500, "GetCommit", err)
return 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) ctx.JSON(200, &apiBranches)
} }

Loading…
Cancel
Save