repo_branch.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright 2014 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 git
  5. import (
  6. "strings"
  7. "github.com/Unknwon/com"
  8. )
  9. func IsBranchExist(repoPath, branchName string) bool {
  10. _, _, err := com.ExecCmdDir(repoPath, "git", "show-ref", "--verify", "refs/heads/"+branchName)
  11. return err == nil
  12. }
  13. func (repo *Repository) IsBranchExist(branchName string) bool {
  14. return IsBranchExist(repo.Path, branchName)
  15. }
  16. func (repo *Repository) GetBranches() ([]string, error) {
  17. stdout, stderr, err := com.ExecCmdDir(repo.Path, "git", "show-ref", "--heads")
  18. if err != nil {
  19. return nil, concatenateError(err, stderr)
  20. }
  21. infos := strings.Split(stdout, "\n")
  22. branches := make([]string, len(infos)-1)
  23. for i, info := range infos[:len(infos)-1] {
  24. parts := strings.Split(info, " ")
  25. if len(parts) != 2 {
  26. continue // NOTE: I should believe git will not give me wrong string.
  27. }
  28. branches[i] = strings.TrimPrefix(parts[1], "refs/heads/")
  29. }
  30. return branches, nil
  31. }
  32. // SetDefaultBranch sets default branch of repository.
  33. func (repo *Repository) SetDefaultBranch(branchName string) error {
  34. if gitVer.LessThan(MustParseVersion("1.7.10")) {
  35. return ErrUnsupportedVersion{"1.7.10"}
  36. }
  37. _, stderr, err := com.ExecCmdDir(repo.Path, "git", "symbolic-ref", "HEAD", "refs/heads/"+branchName)
  38. if err != nil {
  39. return concatenateError(err, stderr)
  40. }
  41. return nil
  42. }