summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doPatch.go87
-rw-r--r--helperPatches.go17
2 files changed, 60 insertions, 44 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 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 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
- }
- // 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
}