package gitpb import ( "path/filepath" "strings" "go.wit.com/log" ) func (repo *Repo) DevelHash() string { brname := repo.GetDevelBranchName() refname := "refs/heads/" + brname all := repo.Tags.All() for all.Scan() { tag := all.Next() // log.Info("repo tag", tag.GetHash(), tag.GetRefname()) if tag.GetRefname() == refname { return tag.GetHash() } } return "" } // this is the correct way. uses 'git show-ref' func (repo *Repo) IsBranchRemote(brname string) bool { if repo.Tags == nil { return false } brname = "refs/remotes/origin/" + brname ref := repo.Tags.FindByRefname(brname) if ref == nil { // log.Info("did not found refname!!!!!!!!", brname) return false } // log.Info("found refname!!!!!!!!") return true } // this is the correct way. uses 'git show-ref' func (repo *Repo) IsDevelRemote() bool { if repo.Tags == nil { return false } devname := repo.GetDevelBranchName() refname := "refs/remotes/origin/" + devname ref := repo.Tags.FindByRefname(refname) if ref == nil { // log.Info("did not found refname!!!!!!!!", refname) return false } // log.Info("found refname!!!!!!!!") return true } // find a branch namm // will find "master" or "devel" // will also find "v0.1.1" // or will find "patches-from-foo" // will return *any* match on any git branch because it doesn't // matter much here yet // eventually this will be worked out by forge in some future code that hasn't been made yet func (repo *Repo) IsBranch(findname string) bool { loop := repo.Tags.All() for loop.Scan() { t := loop.Next() // log.Info("LocalTagExists() tag:", t.Refname) tagname := t.Refname if strings.HasPrefix(tagname, "refs/remotes") { continue } path, filename := filepath.Split(tagname) log.Log(INFO, "gitpb.IsBranch() tag:", path, filename, "from", repo.GetGoPath()) if filename == findname { log.Log(INFO, "gitpb.IsBranch() found tag:", path, filename, "from", repo.GetGoPath()) return true } } log.Log(INFO, "did not find tag:", findname, "in", repo.GetGoPath()) return false } func (repo *Repo) IsLocalBranch(findname string) bool { loop := repo.Tags.All() for loop.Scan() { t := loop.Next() // log.Info("LocalTagExists() tag:", t.Refname) tagname := t.Refname if strings.HasPrefix(tagname, "refs/heads") { continue } path, filename := filepath.Split(tagname) log.Log(INFO, "gitpb.IsBranch() tag:", path, filename, "from", repo.GetGoPath()) if filename == findname { log.Log(INFO, "gitpb.IsBranch() found tag:", path, filename, "from", repo.GetGoPath()) return true } } log.Log(INFO, "did not find tag:", findname, "in", repo.GetGoPath()) return false }