From 68af638f9ece1a67075d5022a1361821e0f03b9a Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Mon, 21 Jul 2025 22:25:27 -0500 Subject: [PATCH] something to make user branches --- branches.go | 26 ++++++++++++++++++++++++++ checkout.go | 6 +++--- 2 files changed, 29 insertions(+), 3 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 +} diff --git a/checkout.go b/checkout.go index ce8c88b..f2df501 100644 --- a/checkout.go +++ b/checkout.go @@ -1,6 +1,7 @@ package gitpb import ( + "fmt" "os" "path/filepath" @@ -84,12 +85,11 @@ func (repo *Repo) checkoutBranch(bName string) bool { func (repo *Repo) createUserBranchNew(branch string) error { if branch == "" || branch == "uerr" { - log.Info("forge.gitpb logic err. branch name was:", branch) - return nil + return fmt.Errorf("forge.gitpb logic err. branch name was: %s", branch) } if repo.IsDirty() { // never change repos on dirty branches - return nil + return fmt.Errorf("repo is dirty") } // log.Info("forge.gitpb look for branch name was:", branch, repo.GetGoPath())