From 32a55301291484c033740f213f5d0e624b11b5bc Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Thu, 30 Jan 2025 11:50:35 -0600 Subject: [PATCH] making safety checks --- repo.merge.go | 44 +++++++++++++++++++++++++++++++------------- 1 file 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 }