github.com/erikjuhani/git-gong@v0.0.0-20220213141213-6b9fa82d4e7c/gong/branch.go (about)

     1  package gong
     2  
     3  import git "github.com/libgit2/git2go/v31"
     4  
     5  type Branch struct {
     6  	ReferenceID *git.Oid
     7  	RefName     string
     8  	Name        string
     9  	Shorthand   string
    10  	essence     *git.Branch
    11  }
    12  
    13  func NewBranch(branchName string, gitBranch *git.Branch) *Branch {
    14  	return &Branch{
    15  		ReferenceID: gitBranch.Target(),
    16  		RefName:     gitBranch.Reference.Name(),
    17  		Name:        branchName,
    18  		Shorthand:   gitBranch.Shorthand(),
    19  		essence:     gitBranch,
    20  	}
    21  }
    22  
    23  func (branch *Branch) AnnotatedCommit() (*git.AnnotatedCommit, error) {
    24  	owner := branch.Essence().Owner()
    25  	defer Free(owner)
    26  
    27  	return owner.AnnotatedCommitFromRef(branch.Essence().Reference)
    28  }
    29  
    30  func (branch *Branch) Essence() *git.Branch {
    31  	return branch.essence
    32  }
    33  
    34  func (branch *Branch) Free() {
    35  	branch.Essence().Free()
    36  }