package repolist import ( "path/filepath" "strings" "go.wit.com/lib/gui/repostatus" "go.wit.com/lib/gui/shell" "go.wit.com/log" ) type Patch struct { Ref string giturl string comment string RS *repostatus.RepoStatus } /* move all this to repolist and gowit repos p, allp := s.GetPatches() if s.allp == nil { s.allp = make([]*patch, 0, 0) s.allp = append(s.allp, allp...) } if dirty == 0 { s.totalPatchesOL.SetText(strconv.Itoa(p) + " patches") s.reason.Enable() // force the user to submit a reason to enable the submit button // s.submitB.Enable() } else { s.totalPatchesOL.SetText(strconv.Itoa(p) + " patches + ? dirty") } */ // move all this to repolist and gowit repos func (repo *RepoRow) GetPatches(oldname string, newname string) (int, []*Patch) { var patchcount int patches := make([]*Patch, 0, 0) // git log --oneline devel..jcarr // userv := repo.Status.GetUserVersion() // develv := repo.Status.GetDevelVersion() // usern := repo.Status.GetUserBranchName() // develn := repo.Status.GetDevelBranchName() if oldname == newname { return 0, nil } // log.Info("repo userv, develv", userv, develv) gitcmd := []string{"git", "log", "--oneline", oldname + ".." + newname} log.Info("Run:", gitcmd) err, output := repo.Status.RunCmd(gitcmd) if err != nil { log.Info("git failed ", repo.GoPath(), "err =", err) return 0, nil } // patches = strings.Split(output, "\n") log.Info("Run:", output) for _, line := range strings.Split(output, "\n") { line = strings.TrimSpace(line) if line == "" { continue } parts := strings.Split(line, " ") newp := new(Patch) newp.RS = repo.Status newp.Ref = parts[0] newp.comment = strings.Join(parts[1:], " ") log.Info("Patch line:", line, newp.RS.String()) patchcount += 1 patches = append(patches, newp) } return patchcount, patches } func (repo *RepoRow) GetUserPatches() (int, []*Patch) { usern := repo.Status.GetUserBranchName() develn := repo.Status.GetDevelBranchName() userv := repo.Status.GetUserVersion() develv := repo.Status.GetDevelVersion() if userv == develv { return 0, nil } c, all := repo.GetPatches(develn, usern) log.Info("GetPatches() guireleaser", develn, usern, "count =", c) return c, all } func (repo *RepoRow) GetMasterPatches() (int, []*Patch) { lasttag := repo.LastTag() mastern := repo.Status.GetMasterBranchName() masterv := repo.Status.GetMasterVersion() if lasttag == masterv { return 0, nil } c, all := repo.GetPatches(lasttag, mastern) log.Info("GetPatches() guireleaser", lasttag, mastern, "count =", c) return c, all } func (r *RepoList) MakePatchset(setdir string) bool { for _, repo := range r.allrepos { userv := repo.Status.GetUserVersion() develv := repo.Status.GetDevelVersion() usern := repo.Status.GetUserBranchName() develn := repo.Status.GetDevelBranchName() if userv == develv { // this repo is unchanged continue } repodir := filepath.Join(setdir, repo.GoPath()) shell.Mkdir(repodir) // git format-patch branch1..branch2 gitcmd := []string{"git", "format-patch", "-o", repodir, develn + ".." + usern} log.Info("Run:", gitcmd) err, output := repo.Status.RunCmd(gitcmd) log.Info("output =", output) if err == nil { log.Info("patches made okay for:", repo.GoPath()) continue } log.Info("patches failed for:", repo.GoPath()) return false } return true }