repo_branch.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright 2016 The Gogs Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package models
  5. import (
  6. "github.com/gogits/git-module"
  7. )
  8. type Branch struct {
  9. Path string
  10. Name string
  11. }
  12. func GetBranchesByPath(path string) ([]*Branch, error) {
  13. gitRepo, err := git.OpenRepository(path)
  14. if err != nil {
  15. return nil, err
  16. }
  17. brs, err := gitRepo.GetBranches()
  18. if err != nil {
  19. return nil, err
  20. }
  21. branches := make([]*Branch, len(brs))
  22. for i := range brs {
  23. branches[i] = &Branch{
  24. Path: path,
  25. Name: brs[i],
  26. }
  27. }
  28. return branches, nil
  29. }
  30. func (repo *Repository) GetBranch(br string) (*Branch, error) {
  31. if !git.IsBranchExist(repo.RepoPath(), br) {
  32. return nil, &ErrBranchNotExist{br}
  33. }
  34. return &Branch{
  35. Path: repo.RepoPath(),
  36. Name: br,
  37. }, nil
  38. }
  39. func (repo *Repository) GetBranches() ([]*Branch, error) {
  40. return GetBranchesByPath(repo.RepoPath())
  41. }
  42. func (br *Branch) GetCommit() (*git.Commit, error) {
  43. gitRepo, err := git.OpenRepository(br.Path)
  44. if err != nil {
  45. return nil, err
  46. }
  47. return gitRepo.GetBranchCommit(br.Name)
  48. }