summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doGui.go40
-rw-r--r--windowPatchsets.go73
2 files changed, 67 insertions, 46 deletions
diff --git a/doGui.go b/doGui.go
index 0628fe5..7d91db7 100644
--- a/doGui.go
+++ b/doGui.go
@@ -193,19 +193,6 @@ func drawWindow(win *gadgets.GenericWindow) {
releaseWin = makeModeMasterWin()
})
- /*
- // the Devel / Patch mode window
- var patchWin *patchesWindow
- gridM.NewButton("Patch Window", func() {
- if patchWin != nil {
- patchWin.Toggle()
- return
- }
- patchWin = new(patchesWindow)
- patchWin.initWindow()
- patchWin.Show()
- })
- */
var patches *stdPatchsetTableWin
gridM.NewButton("Patch Window", func() {
if patches != nil {
@@ -234,6 +221,33 @@ func drawWindow(win *gadgets.GenericWindow) {
reposWin = makeReposWin()
})
+ var patchesWin *stdPatchTableWin
+ gridM.NewButton("Pending patches", func() {
+ if patchesWin != nil {
+ patchesWin.Toggle()
+ return
+ }
+ loadUpstreamPatchsets()
+ if me.psets == nil {
+ log.Info("failed to download current patchsets")
+ return
+ }
+ notdone := new(forgepb.Patches)
+
+ all := me.psets.All()
+ for all.Scan() {
+ pset := all.Next()
+ AddNotDonePatches(notdone, pset)
+ }
+
+ for patch := range notdone.IterAll() {
+ comment := cleanSubject(patch.Comment)
+ log.Info("new patch:", patch.NewHash, "commithash:", patch.CommitHash, patch.RepoNamespace, comment)
+ }
+ // savePatchsets()
+ patchesWin = makePatchesWin(notdone)
+ })
+
// set the initial button state based on the last
// forge mode the user saved in the config file
switch me.forge.Config.Mode {
diff --git a/windowPatchsets.go b/windowPatchsets.go
index 36ee7ba..4251a19 100644
--- a/windowPatchsets.go
+++ b/windowPatchsets.go
@@ -36,6 +36,37 @@ func (w *stdPatchsetTableWin) Toggle() {
w.win.Toggle()
}
+func loadUpstreamPatchsets() {
+ psets, err := me.forge.GetPatchesets()
+ if err != nil {
+ log.Info("Get Patchsets failed", err)
+ return
+ }
+
+ var foundnew bool
+ all := psets.All()
+ for all.Scan() {
+ pset := all.Next()
+ found := me.psets.FindByUuid(pset.Uuid)
+ if found == nil {
+ log.Info("new patchset", pset.Name, pset.Uuid)
+ pset.State = "new"
+ foundnew = true
+ } else {
+ log.Info("patchset already on disk", found.Name, found.State)
+ pset.State = found.State
+ if pset.State == "" {
+ pset.State = "new"
+ }
+ }
+ }
+ if foundnew {
+ log.Info("should save these here")
+ me.psets = psets
+ savePatchsets()
+ }
+}
+
func makePatchsetsWin() *stdPatchsetTableWin {
dwin := new(stdPatchsetTableWin)
dwin.win = gadgets.NewGenericWindow("forge current patchsets", "patchset options")
@@ -54,35 +85,8 @@ func makePatchsetsWin() *stdPatchsetTableWin {
})
grid.NewButton("upstream", func() {
- psets, err := me.forge.GetPatchesets()
- if err != nil {
- log.Info("Get Patchsets failed", err)
- return
- }
-
- var foundnew bool
- all := psets.All()
- for all.Scan() {
- pset := all.Next()
- found := me.psets.FindByUuid(pset.Uuid)
- if found == nil {
- log.Info("new patchset", pset.Name, pset.Uuid)
- pset.State = "new"
- foundnew = true
- } else {
- log.Info("patchset already on disk", found.Name, found.State)
- pset.State = found.State
- if pset.State == "" {
- pset.State = "new"
- }
- }
- }
- dwin.doPatchsetsTable(psets)
- if foundnew {
- log.Info("should save these here")
- me.psets = psets
- savePatchsets()
- }
+ loadUpstreamPatchsets()
+ dwin.doPatchsetsTable(me.psets)
})
grid.NewButton("save", func() {
@@ -354,7 +358,12 @@ func setNewCommitHash(p *forgepb.Patchset) bool {
func AddNotDonePatches(notdone *forgepb.Patches, pset *forgepb.Patchset) {
for patch := range pset.Patches.IterAll() {
- // parts := strings.Fields(patch.Comment)
+ comment := cleanSubject(patch.Comment)
+
+ if found := notdone.FindByCommitHash(patch.CommitHash); found != nil {
+ log.Info("duplicate notdone patch:", patch.NewHash, "commithash:", patch.CommitHash, patch.RepoNamespace, comment)
+ continue
+ }
repo := me.forge.FindByGoPath(patch.RepoNamespace)
if repo == nil {
@@ -363,8 +372,6 @@ func AddNotDonePatches(notdone *forgepb.Patches, pset *forgepb.Patchset) {
continue
}
- comment := cleanSubject(patch.Comment)
-
if patch.NewHash != "na" {
log.Info("already applied patch: newhash:", patch.NewHash, "commithash:", patch.CommitHash, patch.RepoNamespace, comment)
continue
@@ -379,6 +386,6 @@ func AddNotDonePatches(notdone *forgepb.Patches, pset *forgepb.Patchset) {
// this patch has not been applied yet
log.Info("patch: not found hash:", patch.CommitHash, patch.RepoNamespace, comment, newhash, err)
- notdone.Append(patch)
+ notdone.AppendByCommitHash(patch) // double check to ensure the commit hash isn't added twice
}
}