summaryrefslogtreecommitdiff
path: root/doMerge.go
blob: a4ef512d8aa78171d921ccacdadb82a46792da26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// 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.Infof("%s starting git merge", repo.FullPath)
		if repo.CheckoutDevel() {
			log.Info("checkout devel failed", repo.GetGoPath())
			err = fmt.Errorf("checkout devel failed")
			break
		}
		// hash differences when merging user into devel branch
		out := repo.GetBranchDifferences(repo.GetDevelBranchName(), repo.GetUserBranchName())
		for i, hash := range out {
			log.Info("MERGE HASH FROM USER TO DEVEL", i, hash)
		}
		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)
	}
	configSave = true
	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
}