133 lines
3.3 KiB
Go
133 lines
3.3 KiB
Go
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 *Repo) 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 *Repo) 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 *Repo) 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
|
|
}
|