summaryrefslogtreecommitdiff
path: root/doMerge.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-09-04 09:20:19 -0500
committerJeff Carr <[email protected]>2025-09-04 09:20:19 -0500
commitd2010b859a097dafb27568af4fbff269540d8b12 (patch)
tree6cb5d82af4f721890d8192578a9f492efff98c61 /doMerge.go
parent5fec66f97cce98793c657e4183b7ade280f5c7f8 (diff)
finally some sensible merge() code
Diffstat (limited to 'doMerge.go')
-rw-r--r--doMerge.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/doMerge.go b/doMerge.go
new file mode 100644
index 0000000..b58078d
--- /dev/null
+++ b/doMerge.go
@@ -0,0 +1,68 @@
+// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
+// Use of this source code is governed by the GPL 3.0
+
+package main
+
+import (
+ "fmt"
+
+ "go.wit.com/lib/protobuf/gitpb"
+ "go.wit.com/log"
+)
+
+func doMergeDevel() (*gitpb.Repos, error) {
+ var err error
+ done := gitpb.NewRepos()
+ found := findMergeToDevel()
+ for repo := range found.IterAll() {
+ if repo.CheckDirty() {
+ log.Info("repo is dirty", repo.GetGoPath())
+ continue
+ }
+ log.Info("Starting merge on", repo.GetGoPath())
+ if repo.CheckoutDevel() {
+ log.Info("checkout devel failed", repo.GetGoPath())
+ err = fmt.Errorf("checkout devel failed")
+ break
+ }
+ if _, err := repo.MergeToDevel(); err != nil {
+ log.Info("merge from user failed", repo.GetGoPath(), err)
+ err = fmt.Errorf("merge from user failed")
+ // log.Info(strings.Join(r.Stdout, "\n"))
+ // log.Info(strings.Join(r.Stderr, "\n"))
+ break
+ }
+ done.Append(repo)
+ }
+ return done, err
+}
+
+func doMergeMaster() (*gitpb.Repos, error) {
+ var err error
+ done := gitpb.NewRepos()
+ found := findMergeToMaster()
+ for repo := range found.IterAll() {
+ if repo.CheckDirty() {
+ log.Info("repo is dirty", repo.GetGoPath())
+ continue
+ }
+
+ log.Info("Starting merge on", repo.GetGoPath())
+ if repo.CheckoutMaster() {
+ log.Info("checkout devel failed", repo.GetGoPath())
+ err = fmt.Errorf("checkout devel failed")
+ break
+ }
+
+ if _, err := repo.MergeToMaster(); err != nil {
+ log.Info("merge from user failed", repo.GetGoPath(), err)
+ err = fmt.Errorf("merge from user failed")
+ // log.Info(strings.Join(r.Stdout, "\n"))
+ // log.Info(strings.Join(r.Stderr, "\n"))
+ break
+ }
+
+ done.Append(repo)
+ }
+ return done, err
+}