clean devel now has an EXACT check against upstream and master
This commit is contained in:
parent
6386bc4826
commit
55d8abd2a3
60
doClean.go
60
doClean.go
|
@ -59,7 +59,7 @@ func doCleanDevel() error {
|
|||
for all.Scan() {
|
||||
repo := all.Next()
|
||||
if argv.Verbose {
|
||||
log.Info("Cleaning:", repo.GetGoPath())
|
||||
// log.Info("Cleaning:", repo.GetGoPath())
|
||||
}
|
||||
total += 1
|
||||
if repo.GetCurrentBranchName() != repo.GetDevelBranchName() {
|
||||
|
@ -79,17 +79,55 @@ func doCleanDevel() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func exactDevelRepo(repo *gitpb.Repo) error {
|
||||
devel := repo.GetDevelBranchName()
|
||||
master := repo.GetMasterBranchName()
|
||||
err := isBranchSubsetOfTrunk(repo, devel, master)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func checkhashes(repo *gitpb.Repo, hashes []string, refpath string) ([]string, error) {
|
||||
if !repo.Exists(refpath) {
|
||||
return hashes, nil
|
||||
}
|
||||
r, err := repo.RunStrictNew([]string{"cat", refpath})
|
||||
if err != nil {
|
||||
return hashes, err
|
||||
}
|
||||
newhash := r.Stdout[0]
|
||||
for _, hash := range hashes {
|
||||
if newhash != hash {
|
||||
return hashes, fmt.Errorf("%s hash broke %s %s", repo.GetGoPath(), newhash, hash)
|
||||
}
|
||||
}
|
||||
hashes = append(hashes, newhash)
|
||||
return hashes, nil
|
||||
}
|
||||
|
||||
func doCleanDevelRepo(repo *gitpb.Repo) error {
|
||||
var hashes []string
|
||||
devel := repo.GetDevelBranchName()
|
||||
// log.Printf("%s Start verify devel branch: %s\n", repo.GetGoPath(), devel)
|
||||
|
||||
// check if devel branch exists in remote repo
|
||||
if repo.Exists(filepath.Join(".git/refs/remotes/origin", devel)) {
|
||||
if argv.Verbose {
|
||||
var err error
|
||||
if hashes, err = checkhashes(repo, hashes, filepath.Join(".git/refs/remotes/origin", devel)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
remote := filepath.Join("origin", devel)
|
||||
if err := isBranchSubsetOfTrunk(repo, devel, remote); err != nil {
|
||||
if err == ErrorMergeBranch {
|
||||
log.Info("can not do this yet. need push to upstream", repo.GetGoPath())
|
||||
return nil
|
||||
if argv.Force {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
@ -98,6 +136,21 @@ func doCleanDevelRepo(repo *gitpb.Repo) error {
|
|||
|
||||
// verify devel branch is subset of master branch
|
||||
master := repo.GetMasterBranchName()
|
||||
if argv.Verbose {
|
||||
var err error
|
||||
if hashes, err = checkhashes(repo, hashes, filepath.Join(".git/refs/heads", devel)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if argv.Verbose {
|
||||
var err error
|
||||
if hashes, err = checkhashes(repo, hashes, filepath.Join(".git/refs/heads", devel)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if argv.Verbose {
|
||||
log.Info("repo hashes all match. incredible", hashes, repo.GetGoPath())
|
||||
}
|
||||
if err := isBranchSubsetOfTrunk(repo, devel, master); err != nil {
|
||||
if err == ErrorMergeBranch {
|
||||
if argv.Force {
|
||||
|
@ -110,8 +163,9 @@ func doCleanDevelRepo(repo *gitpb.Repo) error {
|
|||
cmd := []string{"git", "merge", master}
|
||||
log.Info("can't run. on wrong branch.", cmd, repo.GetGoPath(), "current branch =", repo.GetCurrentBranchName())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return nil
|
||||
return err
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue