package gitpb import ( "strings" "go.wit.com/log" ) func (repo *Repo) Reload() error { repo.Tags = new(GitTags) repo.reloadGitTags() repo.GoDeps = new(GoDeps) repo.ParseGoSum() if repo.GoInfo != nil { repo.ReloadGo() } repo.setLastTag() repo.setCurrentBranchName() // everything has been checked, now save the mtime's repo.RepoChanged() return nil } func (repo *Repo) ReloadGo() error { repo.GoPlugin = false repo.GoProtobuf = false repo.GoLibrary = false repo.GoBinary = false switch repo.goListRepoType() { case "plugin": repo.GoPlugin = true case "protobuf": repo.GoProtobuf = true case "library": repo.GoLibrary = true case "binary": repo.GoBinary = true } return nil } func (repo *Repo) SetDevelBranchName(bname string) { repo.DevelBranchName = bname } func (repo *Repo) SetUserBranchName(bname string) { repo.UserBranchName = bname } // updates LastTag // todo, get this from the protobuf func (repo *Repo) setLastTag() { cmd := []string{"git", "rev-list", "--tags", "--max-count=1"} result := repo.RunQuiet(cmd) // log.Info("getLastTagVersion()", result.Stdout) if len(result.Stdout) != 1 { log.Log(GITPBWARN, "git LastTag() error:", result.Stdout) repo.LastTag = "" return } hash := result.Stdout[0] cmd = []string{"git", "describe", "--tags", "--always", hash} result = repo.RunQuiet(cmd) if len(result.Stdout) != 1 { log.Log(GITPBWARN, "git LastTag() error:", result.Stdout) repo.LastTag = "" return } repo.LastTag = result.Stdout[0] } func (repo *Repo) setCurrentBranchName() { repo.CurrentBranchName = "" r := repo.RunQuiet([]string{"git", "branch", "--show-current"}) output := strings.Join(r.Stdout, "\n") if r.Error != nil { log.Log(GITPBWARN, "GetCurrentBranchName() not in a git repo?", r.Error, repo.GoPath) log.Log(GITPBWARN, "GetCurrentBranchName() output might have worked anyway:", output) } repo.CurrentBranchName = strings.TrimSpace(output) } // always spawns 'git' and always should spawn 'git' func (repo *Repo) setCurrentBranchVersion() { repo.CurrentBranchVersion = "" if repo == nil { log.Info("repo.GetCurrentBranchVersion() repo == nil") return } r := repo.RunQuiet([]string{"git", "describe", "--tags", "--always"}) output := strings.Join(r.Stdout, "\n") if r.Error != nil { log.Log(GITPBWARN, "GetCurrentBranchVersion() not in a git repo?", r.Error, repo.GoPath) log.Log(GITPBWARN, "GetCurrentBranchVersion() output might have worked anyway:", output) } repo.CurrentBranchVersion = strings.TrimSpace(output) }