summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-01-05 12:02:54 -0600
committerJeff Carr <[email protected]>2025-01-05 12:02:54 -0600
commit22b157f6d7a269bd592c5d907ca2e8c0d189928e (patch)
tree41121a73a96a3672942c382d856ccf039f1a53ba
parentbab03875d20859e047f9ae2b3e406c64fd79fc64 (diff)
add merge things
-rw-r--r--repo.merge.go44
-rw-r--r--shell.go23
2 files changed, 67 insertions, 0 deletions
diff --git a/repo.merge.go b/repo.merge.go
new file mode 100644
index 0000000..9507459
--- /dev/null
+++ b/repo.merge.go
@@ -0,0 +1,44 @@
+package gitpb
+
+import (
+ "github.com/go-cmd/cmd"
+ "go.wit.com/log"
+)
+
+func (rs *Repo) MergeUserToDevel() (*cmd.Status, error) {
+ startbranch := rs.GetCurrentBranchName()
+ devel := rs.GetDevelBranchName()
+ user := rs.GetUserBranchName()
+
+ log.Info("MergeUserToDevel() checking out", devel, "started on", startbranch, "merge", user)
+
+ var all [][]string
+ all = append(all, []string{"git", "checkout", devel})
+ all = append(all, []string{"git", "merge", user})
+ all = append(all, []string{"git", "push"})
+
+ if result, err := rs.RunStrictAll(all); err != nil {
+ log.Log(GITPBWARN, "MergeUserToDevel() failed", rs.GetFullPath())
+ return result, err
+ }
+ return nil, nil
+}
+
+func (rs *Repo) MergeDevelToMaster() (*cmd.Status, error) {
+ startbranch := rs.GetCurrentBranchName()
+ devel := rs.GetDevelBranchName()
+ main := rs.GetMasterBranchName()
+
+ log.Info("MergeDevelToMaster() checking out", main, "started on", startbranch, "merge", devel)
+
+ var all [][]string
+ all = append(all, []string{"git", "checkout", main})
+ all = append(all, []string{"git", "merge", devel})
+ all = append(all, []string{"git", "push"})
+
+ if result, err := rs.RunStrictAll(all); err != nil {
+ log.Log(GITPBWARN, "MergeDevelToMaster() failed", rs.GetFullPath())
+ return result, err
+ }
+ return nil, nil
+}
diff --git a/shell.go b/shell.go
index c9ea1ed..15fab39 100644
--- a/shell.go
+++ b/shell.go
@@ -65,6 +65,19 @@ func (repo *Repo) StrictRun(cmd []string) error {
return nil
}
+func (repo *Repo) RunStrictNew(cmd []string) (*cmd.Status, error) {
+ result := repo.RunQuiet(cmd)
+ if result.Error != nil {
+ log.Warn(repo.GetGoPath(), cmd, "wow. golang is cool. an os.Error:", result.Error)
+ return &result, result.Error
+ }
+ if result.Exit != 0 {
+ log.Warn(cmd, "failed with", result.Exit)
+ return &result, errors.New(fmt.Sprint(cmd, "failed with", result.Exit))
+ }
+ return nil, nil
+}
+
func (repo *Repo) Exists(filename string) bool {
if repo == nil {
return false
@@ -121,3 +134,13 @@ func (repo *Repo) RunAll(all [][]string) bool {
}
return true
}
+
+func (repo *Repo) RunStrictAll(all [][]string) (*cmd.Status, error) {
+ for _, cmd := range all {
+ log.Log(GITPBWARN, "doAll() RUNNING: cmd =", cmd)
+ if result, err := repo.RunStrictNew(cmd); err != nil {
+ return result, err
+ }
+ }
+ return nil, nil
+}