summaryrefslogtreecommitdiff
path: root/repo.merge.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-01-30 11:50:35 -0600
committerJeff Carr <[email protected]>2025-01-30 11:50:35 -0600
commit32a55301291484c033740f213f5d0e624b11b5bc (patch)
tree29bf158742723c64802ae00ae39a0b2dc3240d8a /repo.merge.go
parentd01cb1c9d759fb2e95f0bfd613f9041767f1eff6 (diff)
making safety checks
Diffstat (limited to 'repo.merge.go')
-rw-r--r--repo.merge.go44
1 files changed, 31 insertions, 13 deletions
diff --git a/repo.merge.go b/repo.merge.go
index ae74380..eebdc6a 100644
--- a/repo.merge.go
+++ b/repo.merge.go
@@ -28,6 +28,7 @@ func (r *Repo) MergeToDevel() (*cmd.Status, error) {
}
if !r.IsBranchRemote(devel) {
+ r.Reload() // rescan the repo
// devel branch is not remote. do not try 'git push'
return result, nil
}
@@ -36,27 +37,44 @@ func (r *Repo) MergeToDevel() (*cmd.Status, error) {
cmd = []string{"git", "push"}
result, err = r.RunQuiet(cmd)
if err != nil {
- log.Log(WARN, "MergeToDevel() failed", r.GetFullPath())
+ log.Log(WARN, "GitPushToDevel() failed", r.GetFullPath())
return result, err
}
+ r.Reload() // rescan the repo
return result, nil
}
-func (rs *Repo) MergeDevelToMaster() (*cmd.Status, error) {
- startbranch := rs.GetCurrentBranchName()
- devel := rs.GetDevelBranchName()
- main := rs.GetMasterBranchName()
+func (r *Repo) MergeToMaster() (*cmd.Status, error) {
+ r.Reload()
+ ro := r.GetReadOnly()
+ log.Info("ro is", ro, "for", r.GetGoPath())
+ return nil, nil
- log.Info("MergeDevelToMaster() checking out", main, "started on", startbranch, "merge", devel)
+ if r.GetCurrentBranchName() != r.GetMasterBranchName() {
+ return nil, fmt.Errorf("repo not on master branch")
+ }
+ if r.CheckDirty() {
+ return nil, fmt.Errorf("repo is dirty")
+ }
+ master := r.GetMasterBranchName()
+ devel := r.GetDevelBranchName()
- var all [][]string
- all = append(all, []string{"git", "checkout", main})
- all = append(all, []string{"git", "merge", devel})
- all = append(all, []string{"git", "push"})
+ log.Info("MergeToMaster() merging from", devel, "into", master)
- if result, err := rs.RunStrictAll(all); err != nil {
- log.Log(WARN, "MergeDevelToMaster() failed", rs.GetFullPath())
+ cmd := []string{"git", "merge", devel}
+ result, err := r.RunQuiet(cmd)
+ if err != nil {
+ log.Log(WARN, "MergeToMaster() failed", r.GetFullPath())
return result, err
}
- return nil, nil
+
+ // it seems like we have write access. lets find out!
+ cmd = []string{"git", "push"}
+ result, err = r.RunQuiet(cmd)
+ if err != nil {
+ log.Log(WARN, "GitPushToMaster() failed", r.GetFullPath())
+ return result, err
+ }
+ r.Reload() // rescan the repo
+ return result, nil
}