From ef6da4aa17dcba65276b1fdea025abd0cf4ebe05 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Sun, 20 Apr 2025 21:45:03 -0500 Subject: [PATCH] use RillRepo() --- doSync.go | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/doSync.go b/doSync.go index a6bb284..07e00a5 100644 --- a/doSync.go +++ b/doSync.go @@ -5,10 +5,12 @@ package main import ( "fmt" + "path/filepath" "time" "go.wit.com/lib/gui/shell" "go.wit.com/lib/protobuf/forgepb" + "go.wit.com/lib/protobuf/gitpb" "go.wit.com/log" ) @@ -39,12 +41,15 @@ func doSyncClean() error { return err } + // force everything + argv.Force = true + if err := doCleanUser(); err != nil { - badExit(err) + return err } if err := doCleanDevel(); err != nil { - badExit(err) + return err } now := time.Now() @@ -55,19 +60,65 @@ func doSyncClean() error { } total, count, nope, _ := IsEverythingOnMaster() - log.Printf("Master branch check. %d total repos. (%d git pulled) (%d not on master branch) (%s) git pull total=%d\n", total, count, nope, shell.FormatDuration(time.Since(now)), pullcount) + log.Printf("doSyncClean() ok. %d total repos. (%d git pulled) (%d not on master branch) (%s) git pull total=%d\n", total, count, nope, shell.FormatDuration(time.Since(now)), pullcount) return nil } func doSyncUser() error { + if count, err := me.forge.RillRepo(10, 20, syncDevelBranch); err != nil { + log.Info("RillFunc() failed", err) + return err + } else { + log.Info("Rill syncDevelBranch() ok count =", count) + } + me.argvCheckoutUser = true me.forge.Config.Mode = forgepb.ForgeMode_USER me.forge.Config.ConfigSave() + argv.Force = true if err := doCheckoutShared(); err != nil { return err } return nil } + +func syncDevelBranch(repo *gitpb.Repo) error { + branch := repo.GetDevelBranchName() + if repo.Exists(filepath.Join(".git/refs/heads", branch)) { + return nil + } + if repo.Exists(filepath.Join(".git/refs/remotes/origin", branch)) { + cmd := []string{"git", "checkout", branch} + err := repo.RunVerbose(cmd) + return err + } + cmd := []string{"git", "branch", branch} + repo.RunVerbose(cmd) + cmd = []string{"git", "checkout", branch} + err := repo.RunVerbose(cmd) + return err +} + +func syncDevelBranches() error { + all := me.forge.Repos.SortByFullPath() + for all.Scan() { + repo := all.Next() + branch := repo.GetDevelBranchName() + if repo.Exists(filepath.Join(".git/refs/heads", branch)) { + continue + } + if repo.Exists(filepath.Join(".git/refs/remotes/origin", branch)) { + cmd := []string{"git", "checkout", branch} + repo.RunVerbose(cmd) + continue + } + cmd := []string{"git", "branch", branch} + repo.RunVerbose(cmd) + cmd = []string{"git", "checkout", branch} + repo.RunVerbose(cmd) + } + return nil +}