summaryrefslogtreecommitdiff
path: root/merge.go
diff options
context:
space:
mode:
Diffstat (limited to 'merge.go')
-rw-r--r--merge.go324
1 files changed, 4 insertions, 320 deletions
diff --git a/merge.go b/merge.go
index cda174b..9eb8439 100644
--- a/merge.go
+++ b/merge.go
@@ -1,233 +1,12 @@
package repostatus
import (
- "errors"
- "strconv"
"strings"
"go.wit.com/log"
- "go.wit.com/widget"
)
-// used to block commits on non-user branches
-func (rs *RepoStatus) IsUserBranch() bool {
- if rs.GetCurrentBranchName() == rs.GetUserBranchName() {
- return true
- }
- return false
-}
-
-func (rs *RepoStatus) DeleteUserBranch(force bool) bool {
- log.Log(REPOWARN, "figure out what to do here")
- return false
-}
-
-func (rs *RepoStatus) ResetBranches() bool {
- log.Log(REPOWARN, "figure out what to do here")
- return false
-}
-
-func (rs *RepoStatus) FetchMaster() (error, string) {
- // log.Log(REPOWARN, "FetchMaster() start", rs.Name())
- master := rs.GetMasterBranchName()
- return rs.fetchBranchByName(master)
-}
-
-func (rs *RepoStatus) FetchDevel() (error, string) {
- devel := rs.GetDevelBranchName()
- return rs.fetchBranchByName(devel)
-}
-
-// fetch the branch by name
-func (rs *RepoStatus) fetchBranchByName(bname string) (error, string) {
- if rs.GetCurrentBranchName() != rs.GetUserBranchName() {
- return errors.New("not in user branch"), ""
- }
- if rs.gitConfig == nil {
- return errors.New("missing .git/config"), ""
- }
- for name, branch := range rs.gitConfig.branches {
- if name == bname {
- // found the branch!
- log.Log(REPO, " ", name, "remote:", branch.remote, "merge", branch.merge)
- cmd := []string{"git", "fetch", branch.remote, bname + ":" + bname}
- r := rs.Run(cmd)
- output := strings.Join(r.Stdout, "\n")
- return r.Error, strings.TrimSpace(output)
- }
- }
- return errors.New("branch " + bname + " not found"), ""
-}
-
/*
-func (rs *RepoStatus) runFullAutomation() bool {
- if !rs.MergeUserToDevel() {
- log.Warn("THINGS FAILED returned false")
- return false
- }
- log.Warn("THINGS SEEM OK returned true. can run this again?")
- return true
-}
-*/
-
-var releaseRevision string = ""
-
-// over ride the computation of this if a release is being created
-func (rs *RepoStatus) setRevision(c string) {
- if releaseRevision == "" {
- rs.revision.SetText(c)
- }
- rs.revision.SetText(releaseRevision)
-}
-
-func (rs *RepoStatus) SetVersion(a, b, c string, reason string) {
- rs.major.SetText(a)
- rs.minor.SetText(b)
- releaseRevision = c
- rs.setRevision(c)
-
- rs.targetReleaseVersion.SetText("v" + a + "." + b + "." + c)
-
- rs.versionMessage.SetLabel(reason)
- rs.versionMessage.SetText(reason)
- // rs.versionMessage.SetValue(reason)
-}
-
-func (rs *RepoStatus) IncrementMinorVersion(reason string) {
- lasttag := rs.lasttag.String()
- var major, minor, revision string
- major, minor, revision = splitVersion(lasttag)
-
- olda, _ := strconv.Atoi(major)
- oldb, _ := strconv.Atoi(minor)
- oldc, _ := strconv.Atoi(revision)
-
- oldb += 1
- oldc = 0
-
- newa := strconv.Itoa(olda)
- newb := strconv.Itoa(oldb)
- newc := strconv.Itoa(oldc)
-
- rs.SetVersion(newa, newb, newc, reason)
-}
-
-func (rs *RepoStatus) IncrementRevisionVersion(reason string) {
- lasttag := rs.lasttag.String()
- var major, minor, revision string
- major, minor, revision = splitVersion(lasttag)
-
- olda, _ := strconv.Atoi(major)
- oldb, _ := strconv.Atoi(minor)
- oldc, _ := strconv.Atoi(revision)
-
- oldc += 1
-
- newa := strconv.Itoa(olda)
- newb := strconv.Itoa(oldb)
- newc := strconv.Itoa(oldc)
-
- rs.SetVersion(newa, newb, newc, reason)
-}
-
-func (rs *RepoStatus) setTag() bool {
- lasttag := rs.lasttag.String()
- var major, minor, revision string
- major, minor, revision = splitVersion(lasttag)
-
- olda, _ := strconv.Atoi(major)
- oldb, _ := strconv.Atoi(minor)
- oldc, _ := strconv.Atoi(revision)
-
- log.Log(INFO, "current version here", lasttag)
- log.Log(INFO, "current release a,b,c =", major, minor, revision)
-
- newa, _ := strconv.Atoi(rs.major.String())
-
- newver := strconv.Itoa(newa)
- if newa < olda {
- log.Warn("new version bad", newver, "vs old version", lasttag, "newa =", newa, "olda =", olda)
- rs.newversion.SetLabel("bad")
- return false
- }
- if newa > olda {
- log.Log(INFO, "new version ok", newver, "vs old version", lasttag)
- rs.minor.SetText("0")
- rs.setRevision("0")
- newver := strconv.Itoa(newa) + ".0.0"
- rs.newversion.SetLabel(newver)
- return true
- }
-
- newb, _ := strconv.Atoi(rs.minor.String())
- newver = strconv.Itoa(newa) + "." + strconv.Itoa(newb)
- if newb < oldb {
- log.Warn("new version bad", newver, "vs old version", lasttag, "newb =", newb, "oldb =", oldb)
- rs.newversion.SetLabel("bad")
- return false
- }
-
- if newb > oldb {
- log.Log(INFO, "new version ok", newver, "vs old version", lasttag)
- newver = strconv.Itoa(newa) + "." + strconv.Itoa(newb) + ".0"
- rs.newversion.SetLabel(newver)
- rs.setRevision("0")
- return true
- }
-
- newc, _ := strconv.Atoi(rs.revision.String())
- newver = strconv.Itoa(newa) + "." + strconv.Itoa(newb) + "." + strconv.Itoa(newc)
- if newc <= oldc {
- log.Warn("new version bad", newver, "vs old version", lasttag)
- rs.newversion.SetLabel("bad")
- return false
- }
- log.Log(INFO, "new version ok", newver, "vs old version", lasttag)
- rs.newversion.SetLabel(newver)
- return true
-}
-
-// the newversion field goes through some sanity checking
-// to make sure it's greater than the existing tag and
-// valid according to golang -- it must be format 'v1.2.3'
-func (rs *RepoStatus) GetNewVersionTag() string {
- return rs.newversion.String()
-}
-
-func (rs *RepoStatus) incrementRevision() {
- lasttag := rs.lasttag.String()
- var major, minor, revision string
- if rs.targetReleaseVersion.String() == "" {
- major, minor, revision = splitVersion(lasttag)
- log.Warn("Should release version here", lasttag)
- log.Log(INFO, "Should release a,b,c", major, minor, revision)
- } else {
- // this means there is a specific release version trying to be done
- // use the target release version instead
- major, minor, revision = splitVersion(rs.targetReleaseVersion.String())
- log.Warn("Should release version here", lasttag)
- log.Log(INFO, "Should release a,b,c", major, minor, revision)
- }
-
- a, _ := strconv.Atoi(major)
- b, _ := strconv.Atoi(minor)
- c, _ := strconv.Atoi(revision)
-
- rs.major.AddText(widget.GetString(a))
- rs.major.AddText(widget.GetString(a + 1))
- rs.major.SetText(widget.GetString(a))
-
- rs.minor.AddText(widget.GetString(b))
- rs.minor.AddText(widget.GetString(b + 1))
- rs.minor.SetText(widget.GetString(b))
-
- // rs.c := strconv.Atoi(revision)
- rs.revision.AddText(strconv.Itoa(c + 1))
- rs.revision.AddText(strconv.Itoa(c + 2))
- rs.revision.SetText(strconv.Itoa(c + 1))
- // rs.setRevision(widget.GetString(c + 1))
-}
-
func (rs *RepoStatus) recommend() {
log.Log(INFO, "Is repo dirty?", rs.dirtyLabel.String())
log.Log(INFO, "list the known tags")
@@ -261,7 +40,9 @@ func (rs *RepoStatus) recommend() {
}
log.Log(INFO, "Is repo pushed upstream? git.wit.org or github?")
}
+*/
+/*
func (rs *RepoStatus) generateCmd() bool {
// the length of 24 is arbitrary, but should be short
// they should be things like perhaps, major release names
@@ -292,6 +73,7 @@ func (rs *RepoStatus) generateCmd() bool {
rs.releaseVersion.Enable()
return true
}
+*/
func (rs *RepoStatus) runGitCommands(verbose bool) bool {
var line []string
@@ -343,60 +125,7 @@ func (rs *RepoStatus) setGitCommands() {
rs.versionCmdOutput.SetValue(strings.Join(tmp, "\n"))
}
-func (rs *RepoStatus) setMergeDevelCommands() {
- var line1, line2, line3 []string
- var all [][]string
-
- master := rs.GetMasterBranchName()
- devel := rs.GetDevelBranchName()
-
- line1 = append(line1, "git", "checkout", master)
- all = append(all, line1)
- line2 = append(line2, "git", "merge", devel)
- all = append(all, line2)
- line3 = append(line3, "git", "push")
- all = append(all, line3)
-
- rs.versionCmds = all
-
- var tmp []string
- // convert to displayable to the user text
- for _, line := range all {
- s := strings.Join(line, " ")
- log.Log(INFO, "s =", s)
- tmp = append(tmp, s)
- }
-
- rs.versionCmdOutput.SetValue(strings.Join(tmp, "\n"))
-}
-
-func (rs *RepoStatus) setMergeUserCommands() {
- var line1, line2, line3 []string
- var all [][]string
-
- devel := rs.GetDevelBranchName()
- user := rs.userWorkingName.String()
-
- line1 = append(line1, "git", "checkout", devel)
- all = append(all, line1)
- line2 = append(line2, "git", "merge", user)
- all = append(all, line2)
- line3 = append(line3, "git", "push")
- all = append(all, line3)
-
- rs.versionCmds = all
-
- var tmp []string
- // convert to displayable to the user text
- for _, line := range all {
- s := strings.Join(line, " ")
- log.Log(INFO, "s =", s)
- tmp = append(tmp, s)
- }
-
- rs.versionCmdOutput.SetValue(strings.Join(tmp, "\n"))
-}
-
+/*
func (rs *RepoStatus) IsCorrectMode(mode string) bool {
switch mode {
case "master":
@@ -420,49 +149,4 @@ func (rs *RepoStatus) IsCorrectMode(mode string) bool {
}
return false
}
-
-/* moved to gitpb
-func (rs *RepoStatus) MergeUserToDevel() bool {
- startbranch := rs.GetCurrentBranchName()
- devel := rs.GetDevelBranchName()
- user := rs.GetUserBranchName()
-
- log.Info("MergeUserToDevel() checking out", devel, "started on", startbranch, "merge", user)
-
- var all [][]string
- all = append(all, []string{"git", "checkout", devel})
- all = append(all, []string{"git", "merge", user})
- all = append(all, []string{"git", "push"})
-
- if rs.DoAll(all) {
- log.Log(WARN, "MergeUserToDevel() failed", rs.Path())
- rs.updateNew()
- return true
- }
- // DoAll failed
- rs.updateNew()
- return false
-}
-
-func (rs *RepoStatus) MergeDevelToMaster() bool {
- startbranch := rs.GetCurrentBranchName()
- devel := rs.GetDevelBranchName()
- main := rs.GetMasterBranchName()
-
- log.Info("MergeDevelToMaster() checking out", main, "started on", startbranch, "merge", devel)
-
- var all [][]string
- all = append(all, []string{"git", "checkout", main})
- all = append(all, []string{"git", "merge", devel})
- all = append(all, []string{"git", "push"})
-
- if rs.DoAll(all) {
- log.Log(WARN, "MergeDevelToMaster() failed", rs.Path())
- rs.updateNew()
- return true
- }
- // DoAll failed
- rs.updateNew()
- return false
-}
*/