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