more work on cleaning user branches

This commit is contained in:
Jeff Carr 2025-01-19 00:35:58 -06:00
parent 39f72d2034
commit d84d7d4687
4 changed files with 41 additions and 4 deletions

View File

@ -42,3 +42,6 @@ restart:
reset reset
-rm ~/go/src/repos.pb -rm ~/go/src/repos.pb
make private make private
identify:
autogenpb --identify /home/jcarr/go/src/repos.pb

View File

@ -30,6 +30,7 @@ type args struct {
Bash bool `arg:"--bash" help:"generate bash completion"` Bash bool `arg:"--bash" help:"generate bash completion"`
BashAuto []string `arg:"--auto-complete" help:"does the actual autocompletion"` BashAuto []string `arg:"--auto-complete" help:"does the actual autocompletion"`
Force bool `arg:"--force" help:"try to strong arm things"` Force bool `arg:"--force" help:"try to strong arm things"`
Verbose bool `arg:"--verbose" help:"show more output"`
} }
type EmptyCmd struct { type EmptyCmd struct {

View File

@ -19,7 +19,8 @@ func doClean() error {
for all.Scan() { for all.Scan() {
repo := all.Next() repo := all.Next()
if repo.GetCurrentBranchName() != repo.GetMasterBranchName() { if repo.GetCurrentBranchName() != repo.GetMasterBranchName() {
continue // skip this while in devel
// continue
} }
if err := doCleanRepo(repo); err != nil { if err := doCleanRepo(repo); err != nil {
badRepoExit(repo, err) badRepoExit(repo, err)
@ -32,7 +33,9 @@ func doClean() error {
// removes all local branches // removes all local branches
func doCleanRepo(repo *gitpb.Repo) error { func doCleanRepo(repo *gitpb.Repo) error {
var hasLocal bool var hasLocal bool
log.Info("Cleaning:", repo.GetGoPath()) if argv.Verbose {
log.Info("Cleaning:", repo.GetGoPath())
}
if repo.GitConfig == nil { if repo.GitConfig == nil {
return fmt.Errorf("GitConfig == nil") return fmt.Errorf("GitConfig == nil")
} }
@ -42,11 +45,28 @@ func doCleanRepo(repo *gitpb.Repo) error {
} }
for name, b := range repo.GitConfig.Branches { for name, b := range repo.GitConfig.Branches {
log.Info("\tlocal branch name:", name, b.Merge, b.Remote) if b.Name == "" {
b.Name = name
}
if name == repo.GetMasterBranchName() { if name == repo.GetMasterBranchName() {
// never delete the master branch
// todo: make sure the master branch is in sync with remote master
continue continue
} }
hasLocal = true hasLocal = true
if name == repo.GetUserBranchName() {
if err := doCleanUserBranch(repo, b); err != nil {
return err
}
continue
}
if name == repo.GetDevelBranchName() {
if err := doCleanDevelBranch(repo, b); err != nil {
return err
}
continue
}
log.Info("\tlocal branch name unknown:", name, b.Merge, b.Remote)
} }
if hasLocal { if hasLocal {
return ErrorReposHasLocalBranches return ErrorReposHasLocalBranches
@ -57,3 +77,16 @@ func doCleanRepo(repo *gitpb.Repo) error {
func verifyLocalBranchIsMerged(repo *gitpb.Repo, branch *gitpb.GitBranch) error { func verifyLocalBranchIsMerged(repo *gitpb.Repo, branch *gitpb.GitBranch) error {
return nil return nil
} }
func doCleanDevelBranch(repo *gitpb.Repo, branch *gitpb.GitBranch) error {
log.Printf("\tDo something %s on branch name:%s merge:%s remote:%s\n", repo.GetGoPath(), branch.Name, branch.Merge, branch.Remote)
return nil
}
func doCleanUserBranch(repo *gitpb.Repo, branch *gitpb.GitBranch) error {
if branch.Name != repo.GetUserBranchName() {
return fmt.Errorf("repo %s was not user branch %s", repo.GetGoPath(), branch.Name)
}
log.Printf("\tDo something %s on branch name:%s merge:%s remote:%s\n", repo.GetGoPath(), branch.Name, branch.Merge, branch.Remote)
return nil
}

View File

@ -24,6 +24,6 @@ func badExit(err error) {
} }
func badRepoExit(repo *gitpb.Repo, err error) { func badRepoExit(repo *gitpb.Repo, err error) {
log.Printf("forge failed on %s with %v", repo.GetGoPath(), err) log.Printf("forge failed on %s with %v\n", repo.GetGoPath(), err)
os.Exit(-1) os.Exit(-1)
} }