From e0520ca96d2c854324bebb902e53ef1092849bb9 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Tue, 23 Sep 2025 14:50:59 -0500 Subject: [PATCH] apply patches --- doPatch.go | 89 +++++++++++++++++++++++++++++------------------- helperPatches.go | 17 ++++----- 2 files changed, 61 insertions(+), 45 deletions(-) diff --git a/doPatch.go b/doPatch.go index b13bd82..093ba24 100644 --- a/doPatch.go +++ b/doPatch.go @@ -101,21 +101,24 @@ func doPatch() error { if argv.Patch.List != nil { var changed bool - newpatches := forgepb.NewPatches() + newpatches := new(forgepb.Set) + newpatches.Patches = forgepb.NewPatches() for pset := range me.forge.Patchsets.IterAll() { pset.PrintTable() for patch := range pset.Patches.IterAll() { - if err := setNewCommitHash(patch); err != nil { - log.Infof("%s bad check on patch failure %v\n", patch.Filename, err) - return err - } changed = true - if patch.NewHash == "" { - if newpatches.AppendByPatchId(patch) { + if patch.NewHash == "" || patch.NewHash == "na" { + if newpatches.Patches.AppendByPatchId(patch) { log.Info("patchId added here", patch.PatchId) } else { log.Info("patchId already here", patch.PatchId) } + } else { + if err := setNewCommitHash(patch); err != nil { + log.Infof("%s bad check on patch failure %v\n", patch.Filename, err) + return err + } + log.Info("newhash set already here", patch.PatchId, patch.NewHash) } } } @@ -124,38 +127,54 @@ func doPatch() error { log.Warn("savePatchsets() failed", err) } } + log.Info("NEW PATCHES TABLE") newpatches.PrintTable() - if newpatches.Len() != 0 { - for patch := range newpatches.IterAll() { - log.Info("new patch:", patch.CommitHash, patch.NewHash, patch.Filename) - repo := me.forge.FindByGoPath(patch.Namespace) - if repo == nil { - log.Info("\tCould not find namespace:", patch.Namespace) - continue - } - if fhelp.QuestionUser("apply this patch?") { - newhash, err := applyAndTrackPatch(repo, patch) - log.Info("apply results:", newhash, err) - } + for patch := range newpatches.Patches.IterAll() { + if err := setNewCommitHash(patch); err == nil { + log.Info("newhash set already here", patch.PatchId, patch.NewHash) + continue + } + log.Infof("%s is new\n", patch.Filename) + repo := me.forge.FindByGoPath(patch.Namespace) + if repo == nil { + log.Info("\tCould not find namespace:", patch.Namespace) + continue + } + if fhelp.QuestionUser("apply this patch?") { + newhash, err := applyAndTrackPatch(repo, patch) + log.Info("apply results:", newhash, err) } - return log.Errorf("patches need to be applied") } - - // return doPatchList() - applied := findApplied() - if applied == nil || applied.Len() == 0 { - log.Info("no patches have been appled to the devel branch yet") - return nil - } - // for patch := range applied.IterAll() { - // log.Info("SEND APPLIED: newhash:", patch.NewHash, "commithash:", patch.CommitHash, "patch", patch.Namespace) - // } - newpb, _, err := applied.HttpPostVerbose(myServer(), "applied") - if err != nil { - return err - } - newpb.PrintTable() return nil + /* + if newpatches.Len() != 0 { + for patch := range newpatches.IterAll() { + log.Info("new patch:", patch.CommitHash, patch.NewHash, patch.Filename) + repo := me.forge.FindByGoPath(patch.Namespace) + if repo == nil { + log.Info("\tCould not find namespace:", patch.Namespace) + continue + } + } + return log.Errorf("patches need to be applied") + } + + // return doPatchList() + applied := findApplied() + if applied == nil || applied.Len() == 0 { + log.Info("no patches have been appled to the devel branch yet") + return nil + } + // for patch := range applied.IterAll() { + // log.Info("SEND APPLIED: newhash:", patch.NewHash, "commithash:", patch.CommitHash, "patch", patch.Namespace) + // } + newpb, _, err := applied.HttpPostVerbose(myServer(), "applied") + if err != nil { + return err + } + newpb.PrintTable() + return nil + */ } // if nothing, show patches & dirty repos diff --git a/helperPatches.go b/helperPatches.go index 6bfd4c1..88c301a 100644 --- a/helperPatches.go +++ b/helperPatches.go @@ -181,23 +181,20 @@ func setNewCommitHash(patch *forgepb.Patch) error { comment := cleanSubject(patch.Comment) - if patch.NewHash != "" { - return nil - } os.Chdir(repo.GetFullPath()) newhash, err := findCommitBySubject(comment) if err != nil { return log.Errorf("patch: not found hash: %s %s %s %s %v", patch.CommitHash, patch.Namespace, comment, newhash, err) } - if patch.NewHash == newhash { - // patch was already set - return nil - } - if patch.NewHash != "" { - log.Infof("patch: hash MISMATCH %s old=%s new=%s name=%s\n", patch.Namespace, patch.NewHash, newhash, comment) - return nil + + patchId, err := repo.FindPatchId(newhash) + if err != nil { + return err } + + patch.PatchId = patchId patch.NewHash = newhash + log.Info("patch: found hash:", patch.CommitHash, newhash, patch.Namespace, comment) return nil }