summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doPatch.go38
1 files changed, 27 insertions, 11 deletions
diff --git a/doPatch.go b/doPatch.go
index 6a8dcde..284aff4 100644
--- a/doPatch.go
+++ b/doPatch.go
@@ -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) {