more work on cleaning user branches
This commit is contained in:
parent
39f72d2034
commit
d84d7d4687
3
Makefile
3
Makefile
|
@ -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
|
||||||
|
|
1
argv.go
1
argv.go
|
@ -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 {
|
||||||
|
|
37
doClean.go
37
doClean.go
|
@ -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
|
||||||
|
if argv.Verbose {
|
||||||
log.Info("Cleaning:", repo.GetGoPath())
|
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
|
||||||
|
}
|
||||||
|
|
2
exit.go
2
exit.go
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue