summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2016-02-02 16:51:14 -0500
committerUnknwon <u@gogs.io>2016-02-02 16:51:14 -0500
commit5e97693e0e44037bdf60c6399f957102fed7c93c (patch)
tree5ae0320a24427cd766591abd69bddb5e4d0b9f8d /models
parent452bc385febe2fbf45bbc258299e1dafe48a5b1e (diff)
parentb7b30cd85e5cabd9d643013ffb10dafd133b18ea (diff)
downloadgitea-5e97693e0e44037bdf60c6399f957102fed7c93c.tar.gz
gitea-5e97693e0e44037bdf60c6399f957102fed7c93c.zip
Merge pull request #2506 from sapk/add-branche-api-support
Implement API for branches listing
Diffstat (limited to 'models')
-rw-r--r--models/repo.go14
-rw-r--r--models/repo_branch.go43
2 files changed, 57 insertions, 0 deletions
diff --git a/models/repo.go b/models/repo.go
index 8ce1f7190c..a0074a2953 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -288,6 +288,20 @@ 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
new file mode 100644
index 0000000000..b784f7d537
--- /dev/null
+++ b/models/repo_branch.go
@@ -0,0 +1,43 @@
+// Copyright 2016 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package models
+
+import (
+ "github.com/gogits/git-module"
+)
+
+type Branch struct {
+ Path string
+ Name string
+}
+
+func GetBranchesByPath(path string) ([]*Branch, error) {
+ gitRepo, err := git.OpenRepository(path)
+ if err != nil {
+ return nil, err
+ }
+
+ brs, err := gitRepo.GetBranches()
+ if err != nil {
+ return nil, err
+ }
+
+ Branches := make([]*Branch, len(brs))
+ for i := range brs {
+ Branches[i] = &Branch{
+ Path: path,
+ Name: brs[i],
+ }
+ }
+ return Branches, nil
+}
+
+func (br *Branch) GetCommit() (*git.Commit, error) {
+ gitRepo, err := git.OpenRepository(br.Path)
+ if err != nil {
+ return nil, err
+ }
+ return gitRepo.GetBranchCommit(br.Name)
+}