summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doClean.go8
-rw-r--r--doGui.go4
-rw-r--r--helperPatches.go1
-rw-r--r--windowPatches.go117
4 files changed, 76 insertions, 54 deletions
diff --git a/doClean.go b/doClean.go
index 43057c4..8263d2e 100644
--- a/doClean.go
+++ b/doClean.go
@@ -87,10 +87,12 @@ func doClean() error {
}
log.Printf("\n") // padding for now
- if found.Len() == 0 {
- log.Printf("%d repos are not clean\n", found.Len())
+ var hmm int
+ hmm = found.Len()
+ if hmm == 0 {
+ log.Printf("%d repos are not clean\n", hmm)
} else {
- log.Info("All repos are clean", total, found.Len())
+ log.Info("All repos are clean", total, hmm)
}
return nil
}
diff --git a/doGui.go b/doGui.go
index 00245f4..79e3e56 100644
--- a/doGui.go
+++ b/doGui.go
@@ -196,6 +196,10 @@ func drawWindow(win *gadgets.GenericWindow) {
all := me.forge.Patchsets.All()
for all.Scan() {
pset := all.Next()
+ if pset.State == "DONE" {
+ // skip old patchsets
+ continue
+ }
AddAllPatches(notdone, pset, false)
// AddNotDonePatches(notdone, pset, false)
}
diff --git a/helperPatches.go b/helperPatches.go
index c869697..bb19a39 100644
--- a/helperPatches.go
+++ b/helperPatches.go
@@ -115,7 +115,6 @@ func cleanSubject(line string) string {
// jcarr@framebook:~/go/src/go.wit.com/lib/protobuf/forgepb$ git merge-base --is-ancestor "4a27e7702b9b975b066ec9d2ee7ac932d86552e3" "jcarr" ; echo $?
// 0
-
func findCommitByHash(hash string, subject string) (string, error) {
cmd := exec.Command("git", "log", "--pretty=format:%H %s")
var out bytes.Buffer
diff --git a/windowPatches.go b/windowPatches.go
index ad42076..31ed924 100644
--- a/windowPatches.go
+++ b/windowPatches.go
@@ -39,6 +39,7 @@ func makePatchesWin(patches *forgepb.Patches) *stdPatchTableWin {
dwin.win = gadgets.NewGenericWindow("current patches", "patching options")
dwin.win.Custom = func() {
log.Info("test delete window here")
+ dwin.win.Hide()
// dwin = nil
}
grid := dwin.win.Group.RawGrid()
@@ -57,31 +58,10 @@ func makePatchesWin(patches *forgepb.Patches) *stdPatchTableWin {
grid.NewLabel(fmt.Sprintf("total repos"))
grid.NextRow()
- grid.NewButton("show all", func() {
- /*
- if me.psets == nil {
- log.Info("No Patchsets loaded")
- return
- }
- notdone := new(forgepb.Patches)
-
- all := me.psets.All()
- for all.Scan() {
- pset := all.Next()
- AddNotDonePatches(notdone, pset, true)
- }
-
- for patch := range notdone.IterAll() {
- comment := cleanSubject(patch.Comment)
- log.Info("new patch:", patch.NewHash, "commithash:", patch.CommitHash, patch.Namespace, comment)
- }
- dwin.doPatchesTable(notdone)
- */
- })
-
grid.NewButton("Update", func() {
- log.Info("TODO: run forge.GetPatches() here")
- // me.forge.GetPatches()
+ log.Info("TODO: doesn't update this window")
+ me.forge.GetPatches()
+ dwin.win.Custom()
// loadUpstreamPatchsets()
})
@@ -90,24 +70,22 @@ func makePatchesWin(patches *forgepb.Patches) *stdPatchTableWin {
all := patches.SortByFilename()
for all.Scan() {
p := all.Next()
- rn := p.Namespace
- repo := me.forge.FindByGoPath(rn)
- if repo == nil {
- log.Info("Could not figure out repo path", rn)
- return
- }
- filename, err := savePatch(p)
- if err != nil {
- log.Info("savePatch() failed", err)
- return
- }
- count += 1
- if err := applyPatch(repo, filename); err != nil {
- cmd := []string{"git", "am", "--abort"}
- err := repo.RunVerbose(cmd)
- log.Info("warn user of git am error", err)
- return
- }
+ applyPatchNew(p)
+ /*
+ rn := p.Namespace
+ repo := me.forge.FindByGoPath(rn)
+ if repo == nil {
+ log.Info("Could not figure out repo path", rn)
+ return
+ }
+ count += 1
+ if _, err := applyAndTrackPatch(repo, p); err != nil {
+ cmd := []string{"git", "am", "--abort"}
+ err := repo.RunVerbose(cmd)
+ log.Info("warn user of git am error", err)
+ return
+ }
+ */
}
log.Info("ALL PATCHES WORKED! count =", count)
})
@@ -126,17 +104,13 @@ func applyPatchNew(p *forgepb.Patch) error {
rn := p.Namespace
repo := me.forge.FindByGoPath(rn)
if repo == nil {
- return fmt.Errorf("Could not figure out repo path %s", rn)
+ log.Info("Could not figure out repo path", rn)
+ return log.Errorf("%s namespace?\n", rn)
}
- filename, err := savePatch(p)
- if err != nil {
- log.Info("savePatch() failed", err)
- return err
- }
- if err := applyPatch(repo, filename); err != nil {
- log.Info("warn user of git am error", err)
+ if _, err := applyAndTrackPatch(repo, p); err != nil {
cmd := []string{"git", "am", "--abort"}
err := repo.RunVerbose(cmd)
+ log.Info("warn user of git am error", err)
return err
}
return nil
@@ -222,3 +196,46 @@ func savePatch(p *forgepb.Patch) (string, error) {
return tmpname, nil
}
+
+func applyAndTrackPatch(repo *gitpb.Repo, p *forgepb.Patch) (string, error) {
+ _, filen := filepath.Split(p.Filename)
+ tmpname := filepath.Join("/tmp", filen)
+ log.Info("saving as", tmpname, p.Filename)
+ raw, err := os.OpenFile(tmpname, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
+ if err != nil {
+ return "", err
+ }
+ raw.Write(p.Data)
+ raw.Close()
+
+ cmd := []string{"git", "am", tmpname}
+ err = repo.RunVerbose(cmd)
+ if err != nil {
+ log.Info("git am failed. run 'git am --abort' here")
+ return "", log.Errorf("git am failed")
+ }
+
+ log.Info("Try to find hash value now")
+
+ p.NewHash = "fixme applyAndTrack"
+ if setNewHash(p, p.NewHash) {
+ log.Info("setting NewHash worked", p.NewHash)
+ }
+ me.forge.SavePatchsets()
+
+ return p.NewHash, log.Errorf("did not lookup new hash")
+}
+
+func setNewHash(p *forgepb.Patch, hash string) bool {
+ for pset := range me.forge.Patchsets.IterAll() {
+ for patch := range pset.Patches.IterAll() {
+ if patch.CommitHash == hash {
+ patch.NewHash = hash
+ log.Info("found patch in repo")
+ me.forge.SavePatchsets()
+ return true
+ }
+ }
+ }
+ return false
+}