diff options
| -rw-r--r-- | doPatch.go | 38 |
1 files changed, 27 insertions, 11 deletions
@@ -78,47 +78,56 @@ func doPatchList() (string, error) { return "fix curpatches.pb", err } footer := curpatches.PrintTable() - log.Info("curpatches:", footer) + log.Info("START curpatches:", footer) var needfix int for patch := range curpatches.IterAll() { repo := me.forge.Repos.FindByNamespace(patch.Namespace) if repo == nil { log.Info("no namespace", patch.PatchId, patch.Namespace, patch.Comment) + patch.State = "no namespace" continue } if patch.NewHash == "na" { + patch.State = "was na" needfix = 1 } newId, newHash, err := isPatchIdApplied(repo, patch) if errors.Is(err, ErrorGitPullOnDirty) { log.Info(patch.PatchId, newId, repo.Namespace, "repo dirty", patch.Comment) + patch.State = "repo dirty" // log.Info("a patch with that comment couldn't be found in the repo") } else if err != nil { - log.Info(patch.PatchId, newId, repo.Namespace, err, patch.Comment) - return "isPatchIdApplied() error", patch.Error(err) + // log.Info(patch.PatchId, newId, repo.Namespace, err, patch.Comment) + patch.State = "BAD applied err" + patch.StateChange = "BAD applied err" + // return "isPatchIdApplied() error", patch.Error(err) } if newId == "" { // new patch ! // log.Info(patch.PatchId, "newId==''", patch.Comment) } else { if (newId == patch.PatchId) && (newHash == patch.CommitHash) { - log.Info(patch.PatchId, newId, repo.Namespace, "patch made here", patch.Comment) + // log.Info(patch.PatchId, newId, repo.Namespace, "patch made here", patch.Comment) + patch.StateChange = "made here" patch.NewHash = "author" continue } if newId == patch.PatchId { patch.NewHash = patch.CommitHash - log.Info(patch.PatchId, newId, repo.Namespace, "patch already applied", patch.Comment) + // log.Info(patch.PatchId, newId, repo.Namespace, "patch already applied", patch.Comment) + patch.StateChange = "did already" continue } if newId != patch.PatchId { - log.Info(patch.PatchId, newId, repo.Namespace, "probably duplicate subject? (mismatch)", patch.Comment) + // log.Info(patch.PatchId, newId, repo.Namespace, "probably duplicate subject? (mismatch)", patch.Comment) + patch.StateChange = "dup subject?" // try this. it should compute every patch id in the repo // os.Chdir(repo.FullPath) // newNewId, err := searchAllCommits(targetPatchID string) (string, error) { } } - log.Info(patch.PatchId, newId, repo.Namespace, "new patch", patch.Comment) + // log.Info(patch.PatchId, newId, repo.Namespace, "new patch", patch.Comment) + patch.State = "new patch" if !argv.Fix { needfix += 1 } else { @@ -135,6 +144,8 @@ func doPatchList() (string, error) { } } } + footer = curpatches.PrintTable() + log.Info("END curpatches:", footer) var s string if needfix == 0 { s = "no new patches" @@ -156,16 +167,21 @@ func applyPatch(repo *gitpb.Repo, p *forgepb.Patch) (string, error) { raw.Write(p.Data) raw.Close() - cmd := []string{"git", "am", tmpname} + // always run abort first + cmd := []string{"git", "am", "--abort"} + err = repo.RunVerbose(cmd) + + cmd = []string{"git", "am", tmpname} err = repo.RunVerbose(cmd) if err != nil { + // always run abort after failure. todo: add --keep + cmd := []string{"git", "am", "--abort"} + err = repo.RunVerbose(cmd) log.Info("git am failed. run 'git am --abort' here") return "", log.Errorf("git am failed") } - log.Info("TODO: Try to find hash value now") - - return "TODO", nil + return "patch applied with git am", nil } func doPatchGet(newpb *forgepb.Sets) (string, error) { |
