2016-01-28 22:49:05 +03:00
// 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.
2016-01-15 21:24:03 +03:00
package models
import (
2016-11-10 19:24:48 +03:00
"code.gitea.io/git"
2016-01-15 21:24:03 +03:00
)
2016-11-26 03:40:35 +03:00
// Branch holds the branch information
2016-01-15 21:24:03 +03:00
type Branch struct {
2016-02-03 01:07:40 +03:00
Path string
Name string
2016-01-15 21:24:03 +03:00
}
2016-11-26 03:40:35 +03:00
// GetBranchesByPath returns a branch by it's path
2016-01-15 21:24:03 +03:00
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
}
2016-02-03 01:07:40 +03:00
branches := make ( [ ] * Branch , len ( brs ) )
2016-01-15 21:24:03 +03:00
for i := range brs {
2016-02-03 01:07:40 +03:00
branches [ i ] = & Branch {
2016-01-15 21:24:03 +03:00
Path : path ,
Name : brs [ i ] ,
}
}
2016-02-03 01:07:40 +03:00
return branches , nil
}
2016-11-26 03:40:35 +03:00
// GetBranch returns a branch by it's name
func ( repo * Repository ) GetBranch ( branch string ) ( * Branch , error ) {
if ! git . IsBranchExist ( repo . RepoPath ( ) , branch ) {
return nil , & ErrBranchNotExist { branch }
2016-02-03 01:07:40 +03:00
}
return & Branch {
Path : repo . RepoPath ( ) ,
2016-11-26 03:40:35 +03:00
Name : branch ,
2016-02-03 01:07:40 +03:00
} , nil
}
2016-11-26 03:40:35 +03:00
// GetBranches returns all the branches of a repository
2016-02-03 01:07:40 +03:00
func ( repo * Repository ) GetBranches ( ) ( [ ] * Branch , error ) {
return GetBranchesByPath ( repo . RepoPath ( ) )
2016-01-15 21:24:03 +03:00
}
2016-11-26 03:40:35 +03:00
// GetCommit returns all the commits of a branch
func ( branch * Branch ) GetCommit ( ) ( * git . Commit , error ) {
gitRepo , err := git . OpenRepository ( branch . Path )
2016-01-15 21:24:03 +03:00
if err != nil {
return nil , err
}
2016-11-26 03:40:35 +03:00
return gitRepo . GetBranchCommit ( branch . Name )
2016-01-15 21:24:03 +03:00
}