summaryrefslogtreecommitdiff
path: root/branches.go
diff options
context:
space:
mode:
Diffstat (limited to 'branches.go')
-rw-r--r--branches.go26
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
+}