From 995487e82259d9a5e912d57f00dda68db8607d49 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Tue, 2 Feb 2016 17:07:40 -0500 Subject: [PATCH] Minor fix for #2506 --- models/error.go | 20 +++++++++++++++++++ models/repo.go | 14 ------------- models/repo_branch.go | 24 ++++++++++++++++++----- routers/api/v1/repo/branch.go | 37 +++++++++++++++-------------------- 4 files changed, 55 insertions(+), 40 deletions(-) diff --git a/models/error.go b/models/error.go index 8e2048ded..cd7fa35de 100644 --- a/models/error.go +++ b/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) } +// __________ .__ +// \______ \____________ ____ ____ | |__ +// | | _/\_ __ \__ \ / \_/ ___\| | \ +// | | \ | | \// __ \| | \ \___| 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) +} + // __ __ ___. .__ __ // / \ / \ ____\_ |__ | |__ ____ ____ | | __ // \ \/\/ // __ \| __ \| | \ / _ \ / _ \| |/ / diff --git a/models/repo.go b/models/repo.go index a0074a295..8ce1f7190 100644 --- a/models/repo.go +++ b/models/repo.go @@ -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 diff --git a/models/repo_branch.go b/models/repo_branch.go index b784f7d53..9cf2e9c43 100644 --- a/models/repo_branch.go +++ b/models/repo_branch.go @@ -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) { diff --git a/routers/api/v1/repo/branch.go b/routers/api/v1/repo/branch.go index d322b6b59..e2f15ff5e 100644 --- a/routers/api/v1/repo/branch.go +++ b/routers/api/v1/repo/branch.go @@ -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) }