making safety checks

This commit is contained in:
Jeff Carr 2025-01-30 11:50:35 -06:00
parent d01cb1c9d7
commit 32a5530129
1 changed files with 31 additions and 13 deletions

View File

@ -28,6 +28,7 @@ func (r *Repo) MergeToDevel() (*cmd.Status, error) {
} }
if !r.IsBranchRemote(devel) { if !r.IsBranchRemote(devel) {
r.Reload() // rescan the repo
// devel branch is not remote. do not try 'git push' // devel branch is not remote. do not try 'git push'
return result, nil return result, nil
} }
@ -36,27 +37,44 @@ func (r *Repo) MergeToDevel() (*cmd.Status, error) {
cmd = []string{"git", "push"} cmd = []string{"git", "push"}
result, err = r.RunQuiet(cmd) result, err = r.RunQuiet(cmd)
if err != nil { if err != nil {
log.Log(WARN, "MergeToDevel() failed", r.GetFullPath()) log.Log(WARN, "GitPushToDevel() failed", r.GetFullPath())
return result, err return result, err
} }
r.Reload() // rescan the repo
return result, nil return result, nil
} }
func (rs *Repo) MergeDevelToMaster() (*cmd.Status, error) { func (r *Repo) MergeToMaster() (*cmd.Status, error) {
startbranch := rs.GetCurrentBranchName() r.Reload()
devel := rs.GetDevelBranchName() ro := r.GetReadOnly()
main := rs.GetMasterBranchName() 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 log.Info("MergeToMaster() merging from", devel, "into", master)
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 { cmd := []string{"git", "merge", devel}
log.Log(WARN, "MergeDevelToMaster() failed", rs.GetFullPath()) result, err := r.RunQuiet(cmd)
if err != nil {
log.Log(WARN, "MergeToMaster() failed", r.GetFullPath())
return result, err 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
} }