summaryrefslogtreecommitdiff
path: root/windowForgePatchsets.go
diff options
context:
space:
mode:
Diffstat (limited to 'windowForgePatchsets.go')
-rw-r--r--windowForgePatchsets.go62
1 files changed, 62 insertions, 0 deletions
diff --git a/windowForgePatchsets.go b/windowForgePatchsets.go
index e4c5f55..2f9314e 100644
--- a/windowForgePatchsets.go
+++ b/windowForgePatchsets.go
@@ -12,6 +12,7 @@ import (
"go.wit.com/lib/gadgets"
"go.wit.com/lib/protobuf/forgepb"
+ "go.wit.com/lib/protobuf/gitpb"
"go.wit.com/log"
"go.wit.com/gui"
@@ -78,6 +79,10 @@ func (r *patchesWindow) submitPatchesBox() {
// make the header table for repo stats
r.totalOL = gadgets.NewOneLiner(grid, "Total")
+ grid.NewButton("reset user branches", func() {
+ resetUserBranchesWindow()
+ })
+
grid.NextRow()
r.dirtyOL = gadgets.NewOneLiner(grid, "dirty")
grid.NextRow()
@@ -227,3 +232,60 @@ func (r *patchesWindow) Update() {
r.readonlyOL.SetText(strconv.Itoa(readonly) + " repos")
r.rw.SetText(fmt.Sprintf("%d repos", rw))
}
+
+func resetUserBranchesWindow() {
+ found := gitpb.NewRepos()
+ all := me.forge.Repos.SortByFullPath()
+ for all.Scan() {
+ repo := all.Next()
+ uname := repo.GetUserBranchName()
+ dname := repo.GetDevelBranchName()
+ if repo.GetCurrentBranchName() == uname {
+ log.Info("Repo is on the user branch. Can't delete it.", repo.GetGoPath())
+ continue
+ }
+ b1 := repo.CountDiffObjects(uname, dname)
+ b2 := repo.CountDiffObjects(dname, uname)
+ log.Info("user vs devel count", b1, b2)
+ if b1 == 0 && b2 == 0 {
+ cmd := []string{"git", "branch", "-D", uname}
+ log.Info(repo.GetGoPath(), cmd)
+ repo.RunVerbose(cmd)
+ repo.Reload()
+ continue
+ }
+ found.Append(repo)
+
+ }
+
+ win := gadgets.RawBasicWindow("reset user branches")
+ win.Make()
+ win.Show()
+ win.Custom = func() {
+ // sets the hidden flag to false so Toggle() works
+ win.Hide()
+ }
+ box := win.Box().NewBox("bw vbox", false)
+
+ group := box.NewGroup("test buttons")
+ hbox := group.Box().Horizontal()
+ hbox.NewButton("force delete user branch", func() {
+ win.Disable()
+ defer win.Enable()
+ all := found.SortByFullPath()
+ for all.Scan() {
+ repo := all.Next()
+ brname := repo.GetUserBranchName()
+ cmd := []string{"git", "branch", "-D", brname}
+ log.Info(repo.GetGoPath(), cmd)
+ // repo.RunVerbose(cmd)
+ // repo.Reload()
+ }
+ me.forge.SetConfigSave(true)
+ me.forge.ConfigSave()
+ })
+
+ t := makeStandardReposGrid(found)
+ t.SetParent(box)
+ t.ShowTable()
+}