package gitpb // does processing on the go.mod and go.sum files import ( "go.wit.com/log" ) // count all objects only in branch1 func (repo *Repo) countDiffObjects(branch1, branch2 string) int { cmd := repo.ConstructGitDiffLog(branch1, branch2) r, err := repo.RunVerboseOnError(cmd) if err != nil { return -1 } // log.Info("countDiffObjects()", cmd, len(r.Stdout), strings.Join(r.Stdout, " ")) return len(r.Stdout) } func (repo *Repo) setRepoState() { if repo == nil { return } if repo.IsDirty() { repo.State = "dirty" return } if repo.GetUserVersion() == "uerr" { // user has not made user branches } else { if repo.GetUserVersion() != repo.GetDevelVersion() { repo.State = "merge to devel" return } } if repo.GetDevelVersion() != repo.GetMasterVersion() { b1 := repo.countDiffObjects(repo.GetMasterBranchName(), repo.GetDevelBranchName()) if b1 == 0 { repo.State = "merge to main" // log.Info("master vs devel count is normal b1 == 0", b1) } else { repo.State = "DEVEL < MASTER" // log.Info("master vs devel count b1 != 0", b1) log.Info("SERIOUS ERROR. DEVEL BRANCH NEEDS MERGE FROM MASTER b1 ==", b1, repo.GetGoPath()) } return } // if IsGoTagVersionGreater(oldtag string, newtag string) bool { if !IsGoTagVersionGreater(repo.GetLastTag(), repo.GetMasterVersion()) { repo.State = "last tag greater error" return } if repo.GetLastTag() != repo.GetMasterVersion() { repo.State = "ready to release" return } if repo.CheckBranches() { repo.State = "PERFECT" return } log.Info("Branches are not Perfect", repo.GetFullPath()) log.Info("Branches are not Perfect", repo.GetFullPath()) log.Info("Branches are not Perfect", repo.GetFullPath()) repo.State = "unknown branches" } // returns true if old="v0.2.4" and new="v0.3.3" // returns true if equal // todo: make all of this smarter someday func IsGoTagVersionGreater(oldtag string, newtag string) bool { olda, oldb, oldc := splitInts(oldtag) newa, newb, newc := splitInts(newtag) if newa < olda { return false } if newb < oldb { return false } if newc < oldc { return false } return true } // returns true for "v0.2.4" and false for "v0.2.43-asdfj" // actually returns false for anything not perfectly versioned func IsGoTagPublished(oldtag string, newtag string) bool { // todo return true }