summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doCheckout.go71
-rw-r--r--doGui.go104
-rw-r--r--doPull.go37
-rw-r--r--doSync.go13
-rw-r--r--structs.go8
-rw-r--r--windowReposFix.go10
6 files changed, 63 insertions, 180 deletions
diff --git a/doCheckout.go b/doCheckout.go
index 50feaf7..2200db8 100644
--- a/doCheckout.go
+++ b/doCheckout.go
@@ -10,7 +10,6 @@ import (
"time"
"go.wit.com/lib/gui/shell"
- "go.wit.com/lib/protobuf/forgepb"
"go.wit.com/lib/protobuf/gitpb"
"go.wit.com/log"
)
@@ -120,6 +119,14 @@ func rillCheckoutUser(repo *gitpb.Repo) error {
// trys to figure out if there is still something to update
func doAllCheckoutUser() error {
now := time.Now()
+
+ if argv.Force {
+ log.Info("going to force create user branches")
+ if err := makeUserBranches(); err != nil {
+ return err
+ }
+ }
+
me.forge.RillFuncError(rillCheckoutUser)
count := me.forge.RillReload()
if count != 0 {
@@ -161,6 +168,10 @@ func rillCheckoutDevel(repo *gitpb.Repo) error {
// is every repo on the devel branch?
func doAllCheckoutDevel() error {
now := time.Now()
+ if argv.Force {
+ log.Info("going to force create devel branches")
+ makeDevelBranches()
+ }
log.Info("going to rill:")
me.forge.RillFuncError(rillCheckoutDevel)
count := me.forge.RillReload()
@@ -254,66 +265,28 @@ func doAllCheckoutMaster() error {
return nil
}
-// shared this with the GUI and the command line?
-func doCheckoutShared() error {
- if me.argvCheckoutUser {
- // log.Info("Starting git checkout user")
- if argv.Force {
- log.Info("going to force create user branches")
- if err := makeUserBranches(); err != nil {
- return err
- }
- }
- // this uses rill and is super fast
- doAllCheckoutUser()
- return nil
- }
-
- if me.argvCheckoutDevel {
- // log.Info("Starting git checkout devel")
- if argv.Force {
- log.Info("going to force create devel branches")
- makeDevelBranches()
- }
- // this uses rill and is super fast
- doAllCheckoutDevel()
- return nil
- }
-
- if me.argvCheckoutMaster {
- log.Info("Starting git checkout master")
- doAllCheckoutMaster()
- return nil
- }
- log.Info("Forge didn't know what branches to checkout")
- return nil
-}
-
// trys to figure out if there is still something to update
// todo: redo this logic as it is terrible
func doCheckout() error {
if argv.Checkout.User != nil {
- me.argvCheckoutUser = true
- me.forge.Config.Mode = forgepb.ForgeMode_USER
- me.forge.Config.ConfigSave()
+ if err := doAllCheckoutUser(); err != nil {
+ badExit(err)
+ }
}
if argv.Checkout.Devel != nil {
- me.argvCheckoutDevel = true
- me.forge.Config.Mode = forgepb.ForgeMode_DEVEL
- me.forge.Config.ConfigSave()
+ if err := doAllCheckoutDevel(); err != nil {
+ badExit(err)
+ }
}
if argv.Checkout.Master != nil {
- me.argvCheckoutMaster = true
- me.forge.Config.Mode = forgepb.ForgeMode_MASTER
- me.forge.Config.ConfigSave()
- }
- if err := doCheckoutShared(); err != nil {
- badExit(err)
+ if err := doAllCheckoutMaster(); err != nil {
+ badExit(err)
+ }
}
- okExit("")
+ badExit(fmt.Errorf("did not specify what branch to checkout"))
return nil
}
diff --git a/doGui.go b/doGui.go
index d380f6c..fc92115 100644
--- a/doGui.go
+++ b/doGui.go
@@ -209,109 +209,6 @@ func drawWindow(win *gadgets.GenericWindow) {
gridM.NextRow()
gridM.NewLabel("")
-
- group1 := win.Stack.NewGroup("Forge Mode (deprecated)")
- grid = group1.RawGrid()
- me.forgeMode = grid.NewLabel("")
- me.forgeMode.SetText(me.forge.GetMode())
-
- me.newBranch = grid.NewDropdown()
- me.newBranch.AddText("master")
- me.newBranch.AddText("devel")
- me.newBranch.AddText(me.forge.Config.GetUsername())
- me.newBranch.Custom = func() {
- me.setBranchB.Disable()
- // toggle global values shared by the command line and the gui for doCheckout()
- switch me.newBranch.String() {
- case "master":
- if me.forge.Config.Mode != forgepb.ForgeMode_MASTER {
- me.setBranchB.Enable()
- }
- case "devel":
- if me.forge.Config.Mode != forgepb.ForgeMode_DEVEL {
- me.setBranchB.Enable()
- }
- default:
- if me.forge.Config.Mode != forgepb.ForgeMode_USER {
- me.setBranchB.Enable()
- }
- }
- }
-
- // select the branch you want to test, build and develop against
- // this lets you select your user branch, but, when you are happy
- // you can merge everything into the devel branch and make sure it actually
- // works. Then, when that is good, merge and version everything in master
- me.setBranchB = grid.NewButton("Switch mode", func() {
- win.Disable()
- defer win.Enable()
-
- switch me.newBranch.String() {
- case "master":
- forgeSwitchMode(forgepb.ForgeMode_MASTER)
- case "devel":
- forgeSwitchMode(forgepb.ForgeMode_DEVEL)
- default:
- forgeSwitchMode(forgepb.ForgeMode_USER)
- }
-
- me.setBranchB.Disable()
- })
- me.setBranchB.Disable()
-
- // set the initial button state based on the last
- // forge mode the user saved in the config file
- switch me.forge.Config.Mode {
- case forgepb.ForgeMode_MASTER:
- me.newBranch.SetText("master")
- case forgepb.ForgeMode_DEVEL:
- me.newBranch.SetText("devel")
- case forgepb.ForgeMode_USER:
- me.newBranch.SetText(me.forge.Config.GetUsername())
- default:
- me.newBranch.SetText(me.forge.Config.GetUsername())
- }
-
- forgeSwitchMode(me.forge.Config.Mode)
-}
-
-// verify the GUI button disable/enable settings
-func forgeVerifyGuiState() {
- me.forgeMode.SetText(me.forge.GetMode())
-
- me.argvCheckoutUser = false
- me.argvCheckoutDevel = false
- me.argvCheckoutMaster = false
-
- switch me.forge.Config.Mode {
- case forgepb.ForgeMode_MASTER:
- me.argvCheckoutMaster = true
- me.newBranch.SetText("master")
- case forgepb.ForgeMode_DEVEL:
- me.argvCheckoutDevel = true
- me.newBranch.SetText("devel")
- case forgepb.ForgeMode_USER:
- me.newBranch.SetText(me.forge.Config.GetUsername())
- me.argvCheckoutUser = true
- default:
- me.newBranch.SetText(me.forge.Config.GetUsername())
- me.argvCheckoutUser = true
- }
-}
-
-// sets the text in the labels in the window
-// and hides and shows the buttons
-func forgeSwitchMode(newMode forgepb.ForgeMode) {
- if newMode == me.forge.Config.Mode {
- log.Info("you are already on", newMode.String())
- forgeVerifyGuiState() // doing this here initializes the button state
- return
- }
-
- me.forge.Config.Mode = newMode
- forgeVerifyGuiState() // update the button states
-
- me.forge.Config.ConfigSave()
}
// this is the magic that generates a window directly from the protocol buffer
@@ -359,7 +256,6 @@ func findMergeToDevel() *gitpb.Repos {
found := gitpb.NewRepos()
for repo := range me.forge.Repos.IterByFullPath() {
-
// this sees if user has patches for devel. If it does, add it to found
if repo.CountDiffObjects(repo.GetUserBranchName(), repo.GetDevelBranchName()) > 0 {
found.AppendByGoPath(repo)
diff --git a/doPull.go b/doPull.go
index b4aff68..9bfbc34 100644
--- a/doPull.go
+++ b/doPull.go
@@ -131,3 +131,40 @@ func doGitFetch() {
me.forge.ConfigSave()
}
}
+
+func doMergeDevel() (*gitpb.Repos, error) {
+ var err error
+ done := gitpb.NewRepos()
+ found := findMergeToDevel()
+ for repo := range found.IterAll() {
+ if repo.CheckDirty() {
+ log.Info("repo is dirty", repo.GetGoPath())
+ continue
+ }
+ log.Info("Starting merge on", repo.GetGoPath())
+ if repo.CheckoutDevel() {
+ log.Info("checkout devel failed", repo.GetGoPath())
+ err = fmt.Errorf("checkout devel failed")
+ break
+ }
+ if _, err := repo.MergeToDevel(); err != nil {
+ log.Info("merge from user failed", repo.GetGoPath(), err)
+ err = fmt.Errorf("merge from user failed")
+ // log.Info(strings.Join(r.Stdout, "\n"))
+ // log.Info(strings.Join(r.Stderr, "\n"))
+ break
+ }
+ done.Append(repo)
+ /*
+ if repo.CheckoutMaster() {
+ log.Info("checkout master failed", repo.GetGoPath())
+ return
+ }
+ if _, err := repo.MergeToMaster(); err != nil {
+ log.Info("merge from devel failed", repo.GetGoPath(), err)
+ return
+ }
+ */
+ }
+ return done, err
+}
diff --git a/doSync.go b/doSync.go
index 07e00a5..f6a9683 100644
--- a/doSync.go
+++ b/doSync.go
@@ -9,7 +9,6 @@ import (
"time"
"go.wit.com/lib/gui/shell"
- "go.wit.com/lib/protobuf/forgepb"
"go.wit.com/lib/protobuf/gitpb"
"go.wit.com/log"
)
@@ -28,11 +27,7 @@ func doSync() error {
}
func doSyncClean() error {
- me.argvCheckoutMaster = true
- me.forge.Config.Mode = forgepb.ForgeMode_MASTER
- me.forge.Config.ConfigSave()
-
- if err := doCheckoutShared(); err != nil {
+ if err := doAllCheckoutMaster(); err != nil {
return err
}
@@ -73,12 +68,8 @@ func doSyncUser() error {
log.Info("Rill syncDevelBranch() ok count =", count)
}
- me.argvCheckoutUser = true
- me.forge.Config.Mode = forgepb.ForgeMode_USER
- me.forge.Config.ConfigSave()
-
argv.Force = true
- if err := doCheckoutShared(); err != nil {
+ if err := doAllCheckoutUser(); err != nil {
return err
}
diff --git a/structs.go b/structs.go
index a6f4cc7..012ab28 100644
--- a/structs.go
+++ b/structs.go
@@ -37,17 +37,9 @@ type mainType struct {
gitAuthor *gadgets.OneLiner // ENV GIT_AUTHOR NAME and EMAIL
// these hold the branches that the user can switch all the repositories to them
- newBranch *gui.Node // deprecate?
- setBranchB *gui.Node // deprecate?
reposWinB *gui.Node // button that opens the repos window
repoAllB *gui.Node // "all" repos button
repoDirtyB *gui.Node // "dirty" repos button
repoDevelMergeB *gui.Node // "merge to devel" repos button
repoWritableB *gui.Node // "what repos are writable" repos button
-
- // deprecate these
- forgeMode *gui.Node // is the user in 'master', 'devel' or 'user' branches
- argvCheckoutUser bool // shared between the GUI and the command line tools
- argvCheckoutDevel bool // shared between the GUI and the command line tools
- argvCheckoutMaster bool // shared between the GUI and the command line tools
}
diff --git a/windowReposFix.go b/windowReposFix.go
index ef525c3..e5452b5 100644
--- a/windowReposFix.go
+++ b/windowReposFix.go
@@ -236,10 +236,7 @@ func makeHackModeWindow(stdwin *stdReposTableWin) {
stdwin.win.Disable()
defer stdwin.win.Enable()
- me.argvCheckoutUser = false
- me.argvCheckoutDevel = true
- me.argvCheckoutMaster = false
- if err := doCheckoutShared(); err != nil {
+ if err := doAllCheckoutDevel(); err != nil {
log.Info("checkout error:", err)
} else {
log.Info("checkout was ok")
@@ -247,10 +244,7 @@ func makeHackModeWindow(stdwin *stdReposTableWin) {
mergeUserToDevel(true)
- me.argvCheckoutUser = false
- me.argvCheckoutDevel = false
- me.argvCheckoutMaster = true
- if err := doCheckoutShared(); err != nil {
+ if err := doAllCheckoutMaster(); err != nil {
log.Info("checkout error:", err)
} else {
log.Info("checkout was ok")