summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-02-22 03:40:37 -0600
committerJeff Carr <[email protected]>2025-02-22 03:40:37 -0600
commit844bf0e294c104cca1faac22d6bf5cc79b1ec4c4 (patch)
treeb178f135922069ab83386ca6776322d1ccd69a29
parentdf0f0a21c36f90442978fa12ebcefa3f15722c9e (diff)
good deal
-rw-r--r--doGui.go3
-rw-r--r--windowForgePatchsets.go62
-rw-r--r--windowRepoProblems.go22
3 files changed, 82 insertions, 5 deletions
diff --git a/doGui.go b/doGui.go
index 26771e6..e1de155 100644
--- a/doGui.go
+++ b/doGui.go
@@ -196,7 +196,8 @@ func drawWindow(win *gadgets.BasicWindow) {
doCheckDirtyAndConfigSave()
found := findDirty()
_, box := makeStandardReposWindow("dirty repos", found)
- box.NewButton("commit all", func() {
+ hbox := box.Box().Horizontal()
+ hbox.NewButton("commit all", func() {
all := found.SortByFullPath()
for all.Scan() {
repo := all.Next()
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()
+}
diff --git a/windowRepoProblems.go b/windowRepoProblems.go
index 1f61fd1..b8f39d8 100644
--- a/windowRepoProblems.go
+++ b/windowRepoProblems.go
@@ -5,6 +5,7 @@ package main
import (
"fmt"
+ "os"
"sync"
"go.wit.com/lib/gadgets"
@@ -96,8 +97,18 @@ func makeRepoProblemsWindow() *repoProblemsWindow {
found := develBehindMasterProblem()
group := box.NewGroup("test buttons")
- group.NewButton("hello", func() {
- log.Info("world")
+ hbox := group.Box().Horizontal()
+ hbox.NewButton("git merge master devel", func() {
+ all := found.SortByFullPath()
+ for all.Scan() {
+ repo := all.Next()
+ mname := repo.GetMasterBranchName()
+ dname := repo.GetDevelBranchName()
+ cmd := []string{"git", "merge", mname, dname}
+ log.Info(repo.GetGoPath(), cmd)
+ }
+ })
+ hbox.NewButton("test", func() {
})
t := makeStandardReposGrid(found)
@@ -119,7 +130,8 @@ func makeRepoProblemsWindow() *repoProblemsWindow {
found := remoteUserBranchProblem()
group := box.NewGroup("test buttons")
- group.NewButton("git branch delete", func() {
+ hbox := group.Box().Horizontal()
+ hbox.NewButton("git branch delete", func() {
win.Disable()
defer win.Enable()
all := found.SortByFullPath()
@@ -127,9 +139,11 @@ func makeRepoProblemsWindow() *repoProblemsWindow {
repo := all.Next()
brname := repo.GetUserBranchName()
// git push origin --delete jcarr
+ os.Setenv("GIT_TERMINAL_PROMPT", "0")
cmd := []string{"git", "push", "origin", "--delete", brname}
- log.Info(repo.GetGoPath(), cmd)
+ log.Info("You may want to run:", repo.GetGoPath(), cmd)
repo.RunVerbose(cmd)
+ os.Unsetenv("GIT_TERMINAL_PROMPT")
// git branch --delete --remote origin/jcarr
cmd = []string{"git", "branch", "--delete", "--remote", "origin/" + brname}