diff options
Diffstat (limited to 'branches.go')
| -rw-r--r-- | branches.go | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/branches.go b/branches.go index 9159e92..3b642c1 100644 --- a/branches.go +++ b/branches.go @@ -82,3 +82,29 @@ func (repo *Repo) DeleteLocalDevelBranch() error { return fmt.Errorf("local branch has patches not in remote") } } + +// makes a local branch based off of the master branch +// (unless a remote devel branch exists. then it uses that) +func (repo *Repo) MakeLocalDevelBranch() error { + branch := repo.GetDevelBranchName() + if branch == "" { + // hard coded default + branch = "devel" + } + if repo.Exists(filepath.Join(".git/refs/heads", branch)) { + // local devel branch already exists + return nil + } + if repo.Exists(filepath.Join(".git/refs/remotes/origin", branch)) { + // remote devel branch exists, but local does not + cmd := []string{"git", "checkout", branch} + repo.RunVerbose(cmd) + return nil + } + master := repo.GetMasterBranchName() + cmd := []string{"git", "branch", branch, master} + repo.RunVerbose(cmd) + cmd = []string{"git", "checkout", branch} + repo.RunVerbose(cmd) + return nil +} |
