summaryrefslogtreecommitdiff
path: root/doPull.go
diff options
context:
space:
mode:
Diffstat (limited to 'doPull.go')
-rw-r--r--doPull.go73
1 files changed, 61 insertions, 12 deletions
diff --git a/doPull.go b/doPull.go
index bacaf8e..e2d33ae 100644
--- a/doPull.go
+++ b/doPull.go
@@ -4,24 +4,22 @@
package main
import (
+ "time"
+
+ "go.wit.com/lib/gui/shell"
"go.wit.com/lib/protobuf/forgepb"
"go.wit.com/lib/protobuf/gitpb"
"go.wit.com/log"
)
// is every repo on the devel branch?
-func doGitPull() error {
- if me.forge.Config.Mode != forgepb.ForgeMode_MASTER {
- if argv.Force == true {
- log.Info("okay. you have forced the issue")
- } else {
- log.Info("forge requres being on the master branch")
- log.Info("you must run:")
- log.Info("")
- log.Info("forge checkout master")
- log.Info("")
- return nil
- }
+func doPull() error {
+ if me.forge.Config.Mode == forgepb.ForgeMode_NORMAL {
+ log.Info("you must check out the devel or master branches")
+ return nil
+ }
+ if argv.Force == true {
+ log.Info("okay. you have forced the issue")
}
// stats := me.forge.RillFuncError(rillPull)
@@ -39,3 +37,54 @@ func doGitPull() error {
return nil
}
+
+func rillPull(repo *gitpb.Repo) error {
+ if repo.IsDirty() {
+ // never do dirty repos
+ return nil
+ }
+ t, _ := repo.LastGitPull()
+ if time.Since(t) < time.Minute*10 && !argv.Force {
+ if argv.Verbose {
+ log.Info(repo.GetFullPath(), "git pulled too recently", shell.FormatDuration(time.Since(t)))
+ }
+ return nil
+ }
+ cur := repo.GetCurrentBranchName()
+ if !repo.IsBranchRemote(cur) {
+ if argv.Verbose {
+ log.Info(repo.GetFullPath(), "branch is not remote", cur)
+ }
+ return nil
+ }
+
+ var cmd []string
+ cmd = append(cmd, "git", "pull")
+ err := repo.RunVerbose(cmd)
+ if err != nil {
+ log.Info(repo.GetFullPath(), "git pull err:", err)
+ }
+ return nil
+}
+
+/*
+// git fetch origin master:master
+func rillFetchMaster(repo *gitpb.Repo) error {
+ if repo.GetCurrentBranchName() != repo.GetUserBranchName() {
+ // only fetch when branch is on the user branch
+ return nil
+ }
+ branch := repo.GetMasterBranchName()
+ cmd := []string{"git", "fetch", "origin", branch + ":" + branch}
+ err := repo.RunVerbose(cmd)
+ return err
+}
+
+func doGitFetch() {
+ me.forge.RillFuncError(rillFetchMaster)
+ count := me.forge.RillReload()
+ if count != 0 {
+ me.forge.ConfigSave()
+ }
+}
+*/