summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile5
-rw-r--r--argvAutoshell.go6
-rw-r--r--doClean.go126
-rw-r--r--doSync.go8
-rw-r--r--windowModeMaster.go54
5 files changed, 84 insertions, 115 deletions
diff --git a/Makefile b/Makefile
index 8d0bd91..171813f 100644
--- a/Makefile
+++ b/Makefile
@@ -6,14 +6,15 @@ BUILDTIME = $(shell date +%Y.%m.%d_%H%M)
# make gocui # try the ncurses gui plugin
# make andlabs # try the andlabs gui plugin (uses GTK)
-default: gocui
+default: verbose install
+ forge clean
#forge
vet:
@GO111MODULE=off go vet
@echo this go binary package builds okay
-verbose:
+verbose: goimports vet plugin
GO111MODULE=off go build -v -x \
-ldflags "-X main.VERSION=${VERSION} -X main.BUILDTIME=${BUILDTIME} -X gui.GUIVERSION=${VERSION}"
diff --git a/argvAutoshell.go b/argvAutoshell.go
index 6d2bb96..8c34d68 100644
--- a/argvAutoshell.go
+++ b/argvAutoshell.go
@@ -29,8 +29,8 @@ func (args) doBashAuto() {
// me.pp.WriteHelp(os.Stderr)
// me.pp.WriteUsageForSubcommand(os.Stderr, me.pp.SubcommandNames()...)
// me.pp.WriteHelpForSubcommand(os.Stderr, me.pp.SubcommandNames()...)
- me.pp.WriteHelpForSubcommand(os.Stderr, "clean")
- fmt.Println("devel user")
+ // me.pp.WriteHelpForSubcommand(os.Stderr, "clean")
+ fmt.Println("--force")
case "commit":
fmt.Println("--all")
case "config":
@@ -66,7 +66,7 @@ func (args) doBashAuto() {
default:
if argv.BashAuto[0] == ARGNAME {
// list the subcommands here
- fmt.Println("--bash list checkout commit config dirty debug fetch merge patch pull")
+ fmt.Println("--bash list checkout clean commit dirty debug fetch merge patch pull")
}
}
os.Exit(0)
diff --git a/doClean.go b/doClean.go
index e2ad047..05f5272 100644
--- a/doClean.go
+++ b/doClean.go
@@ -11,63 +11,64 @@ import (
"go.wit.com/log"
)
-var ErrorReposHasLocalBranches error = fmt.Errorf("repo still has local branches")
-var ErrorMergeBranch error = fmt.Errorf("trunk has things not in the branch")
-var ErrorMergeTrunk error = fmt.Errorf("branch has things not in trunk")
-
+// reverts all repos back to the original master branches
+// automatically deletes local devel and user branches
func doClean() error {
- if argv.Clean.Pub != nil {
- if err := doCleanPub(); err != nil {
- badExit(err)
- }
- log.Info("finished attempt at cleaning devel branches")
- return nil
- }
- if argv.Clean.Devel != nil {
- if err := doCleanDevel(); err != nil {
- badExit(err)
- }
- log.Info("finished attempt at cleaning devel branches")
- return nil
- }
- if argv.Clean.User != nil {
- if err := doCleanUser(); err != nil {
- log.Info(err)
- okExit("")
- }
- return nil
- }
- return nil
-}
-
-func doCleanUser() error {
- if _, count, _, err := IsEverythingOnMaster(); err != nil {
- if count == 0 {
- log.Info("No repos are on the master branch")
- return nil
- }
- log.Info("Not all repos are on the master branch")
- // return err
+ // fix this to work, then delete all the other options for "forge clean'
+ if err := doAllCheckoutMaster(); err != nil {
+ // badExit(err)
}
- var anyerr error
-
all := me.forge.Repos.SortByFullPath()
for all.Scan() {
repo := all.Next()
+ if repo.GetCurrentBranchName() != repo.GetMasterBranchName() {
+ continue
+ }
+ if repo.IsDirty() {
+ continue
+ }
+ if repo.GetTargetVersion() != "" {
+ repo.SetTargetVersion("")
+ configSave = true
+ }
+
+ // try to delete user
if err := doCleanUserRepo(repo); err != nil {
log.Info(repo.GetGoPath(), err)
- anyerr = err
}
+
+ // try to delete devel
+ doRepoCleanDevel(repo)
}
- return anyerr
+
+ log.Info("finished attempt at cleaning devel branches")
+ return nil
}
/*
-func doesLocalBranchExist(repo *gitpb.Repo, branch string) bool {
- return repo.Exists(filepath.Join(".git/refs/heads", branch))
-}
+ func doesLocalBranchExist(repo *gitpb.Repo, branch string) bool {
+ return repo.Exists(filepath.Join(".git/refs/heads", branch))
+ }
*/
+func doRepoCleanDevel(repo *gitpb.Repo) error {
+ if !repo.IsLocalBranch(repo.GetDevelBranchName()) {
+ // there is no local branch named 'devel'
+ return nil
+ }
+
+ if repo.GetCurrentBranchName() != repo.GetMasterBranchName() {
+ return log.Errorf("%s not on master branch:", repo.GetFullPath())
+ }
+ if repo.IsDirty() {
+ return log.Errorf("%s is dirty:", repo.GetFullPath())
+ }
+ if err := justDeleteTheDevelBranchAlready(repo); err != nil {
+ log.Info("justDeleteTheDevel() err", repo.GetGoPath(), err)
+ return err
+ }
+ return nil
+}
func doCleanDevel() error {
var total int
@@ -118,17 +119,38 @@ func doCleanUserRepo(repo *gitpb.Repo) error {
return nil
}
- log.Info("trying to delete", bruser, repo.GetUserVersion())
+ // will you loose work if you delete your user branch?
+ // if DevelBranchExists()
+ // then if UserBranchCommits exist in DevelBranch
+ // DeleteUserBranch is safe
+ if repo.IsLocalBranch(brdevel) {
+ b1 := repo.CountDiffObjects(bruser, "refs/heads/"+brdevel) // should be zero
+ if b1 == 0 {
+ // every user branch exists in devel. delete user branch
+ cmd := []string{"git", "branch", "-D", bruser}
+ log.Info("USER IS IN DEVEL", repo.GetGoPath(), cmd)
+ err := repo.RunVerbose(cmd)
+ return err
+ }
+ }
- b1 := repo.CountDiffObjects(bruser, brdevel) // should be zero
- if b1 == 0 {
- cmd := []string{"git", "branch", "-D", bruser}
- log.Info("USER IS IN DEVEL", repo.GetGoPath(), cmd)
- err := repo.RunVerbose(cmd)
- return err
+ brmaster := repo.GetMasterBranchName()
+
+ // will you loose work if you delete your user branch?
+ // if master branch exists()
+ // then if all user commits exist in master
+ // delete user branch is safe
+ if repo.IsLocalBranch(brmaster) {
+ b1 := repo.CountDiffObjects(bruser, "refs/heads/"+brmaster) // should be zero
+ if b1 == 0 {
+ cmd := []string{"git", "branch", "-D", bruser}
+ log.Info("USER IS IN DEVEL", repo.GetGoPath(), cmd)
+ err := repo.RunVerbose(cmd)
+ return err
+ }
}
- return fmt.Errorf("%s branch has things not in %s count=%d", bruser, brdevel, b1)
+ return fmt.Errorf("%s branch has unique commits", bruser)
}
// hack to cleanup release versioning info
@@ -177,7 +199,7 @@ func justDeleteTheDevelBranchAlready(repo *gitpb.Repo) error {
// remote doesn't exist, check against master
master := repo.GetMasterBranchName()
- b1 := repo.CountDiffObjects(branch, master) // should be zero
+ b1 := repo.CountDiffObjects(branch, "refs/heads/"+master) // should be zero
if b1 == 0 {
cmd := []string{"git", "branch", "-D", repo.GetDevelBranchName()}
log.Info("DEVEL IS IN REMOTE", repo.GetGoPath(), cmd)
diff --git a/doSync.go b/doSync.go
index 19c9e86..08d23fc 100644
--- a/doSync.go
+++ b/doSync.go
@@ -39,14 +39,6 @@ func doSyncClean() error {
// force everything
argv.Force = true
- if err := doCleanUser(); err != nil {
- return err
- }
-
- if err := doCleanDevel(); err != nil {
- return err
- }
-
now := time.Now()
pullcount := me.forge.RillFuncError(rillPull)
count := me.forge.RillReload()
diff --git a/windowModeMaster.go b/windowModeMaster.go
index e09d991..a48875d 100644
--- a/windowModeMaster.go
+++ b/windowModeMaster.go
@@ -15,73 +15,27 @@ func makeModeMasterWin() *gadgets.GenericWindow {
win := gadgets.NewGenericWindow("Release", "tools")
grid := win.Group.RawGrid()
- checkout := grid.NewButton("git checkout master", func() {
+ grid.NewButton("git checkout master", func() {
win.Disable()
defer win.Enable()
})
- gitpull := grid.NewButton("git pull", func() {
+ grid.NewButton("git pull", func() {
win.Disable()
defer win.Enable()
})
grid.NextRow()
- cleanUser := grid.NewButton("Clean user branches", func() {
+ grid.NewButton("Clean branches", func() {
win.Disable()
defer win.Enable()
- if err := doCleanUser(); err != nil {
- log.Info("Clean user branches failed", err)
- }
+ doClean()
})
- cleanDevel := grid.NewButton("Clean devel branches", func() {
- win.Disable()
- defer win.Enable()
- if err := doCleanDevel(); err != nil {
- log.Info("Clean devel branches failed", err)
- }
- })
grid.NextRow()
- f := func() {
- total, count, nope, err := IsEverythingOnMaster()
- if nope == 0 {
- checkout.Disable()
- gitpull.Enable()
- } else {
- log.Printf("Master branch check. %d total repos. (%d ok) (%d not on master branch) err=%v\n", total, count, nope, err)
- checkout.Enable()
- }
-
- var localuser bool // are there still local user branches
- var localdevel bool // are there still local devel branches
-
- all := me.forge.Repos.SortByFullPath()
- for all.Scan() {
- repo := all.Next()
- if repo.IsLocalBranch(repo.GetUserBranchName()) {
- localuser = true
- }
- if repo.IsLocalBranch(repo.GetDevelBranchName()) {
- localdevel = true
- }
- }
- if localuser {
- cleanUser.Enable()
- } else {
- cleanUser.Disable()
- }
- if localdevel {
- cleanDevel.Enable()
- } else {
- cleanDevel.Disable()
- }
- }
-
grid.NewButton("check repo state", func() {
win.Disable()
defer win.Enable()
-
- f()
})
grid.NewButton("reset user branches (?)", func() {