summaryrefslogtreecommitdiff
path: root/reloadBranches.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-01-07 04:59:01 -0600
committerJeff Carr <[email protected]>2025-01-07 04:59:01 -0600
commit2fe035fbf0e1d08f3c546bc100a723c5d6c314d6 (patch)
tree2a1e5b937e0b9e7c0904f475ec06439fbddc4b99 /reloadBranches.go
parent016335b322ea65ee33e9de85e6bb818bdbcd2e39 (diff)
migrate in some old code
Diffstat (limited to 'reloadBranches.go')
-rw-r--r--reloadBranches.go116
1 files changed, 116 insertions, 0 deletions
diff --git a/reloadBranches.go b/reloadBranches.go
new file mode 100644
index 0000000..b7e3a15
--- /dev/null
+++ b/reloadBranches.go
@@ -0,0 +1,116 @@
+package gitpb
+
+import (
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "strings"
+ "unicode/utf8"
+
+ "go.wit.com/lib/gui/shell"
+ "go.wit.com/log"
+)
+
+// TODO: make this report the error somewhere
+// This is supposed to check all the branches to make sure
+// they are the same. that was originally what this was for
+// now I think it's jsut probably dumb old code that doesn't
+// need to be here
+
+// actually, this is to attempt to verify absolutely everything
+// is pushed upstream before doing a rm -rf ~/go/src
+// TODO: revisit this code in the autotypist later
+func (repo *Repo) CheckBranches() bool {
+ var hashCheck string
+ var perfect bool = true
+ all := repo.getBranches()
+ path := filepath.Join(repo.FullPath, ".git/refs/")
+ for _, b := range all {
+ parts := strings.Split(b, "/")
+ rdir := "heads"
+ if len(parts) == 2 {
+ rdir = "remotes"
+ }
+ fullfile := filepath.Join(path, rdir, b)
+
+ // check if the ref name is "HEAD". if so, skip
+ runeCount := utf8.RuneCountInString(fullfile)
+ // Convert the string to a slice of runes
+ runes := []rune(fullfile)
+ // Slice the last 4 runes
+ lastFour := runes[runeCount-4:]
+ if string(lastFour) == "HEAD" {
+ log.Info("skip HEAD fullfile", fullfile)
+ continue
+ }
+
+ content, _ := ioutil.ReadFile(fullfile)
+ hash := strings.TrimSpace(string(content))
+ if hashCheck == "" {
+ hashCheck = hash
+ }
+ var cmd []string
+ cmd = append(cmd, "git", "show", "-s", "--format=%ci", hash)
+ r := shell.PathRunLog(repo.GetFullPath(), cmd, GITPB)
+ if r.Error != nil {
+ log.Log(GITPBWARN, "CheckBranches() git show error:", r.Error)
+ }
+ // git show -s --format=%ci <hash> will give you the time
+ // log.Log(REPO, fullfile)
+ if hash == hashCheck {
+ // log.Info("notsure why this git show is here", hash)
+ } else {
+ log.Log(GITPBWARN, repo.GetFullPath(), hash, r.Stdout, b)
+ log.Log(GITPBWARN, "UNKNOWN BRANCHES IN THIS REPO", cmd)
+ // repo.versionCmdOutput.SetText("UNKNOWN BRANCHES")
+ perfect = false
+ // parts := strings.Split(b, "/")
+ // log.Warn("git push", parts)
+ }
+ }
+ return perfect
+}
+
+func (repo *Repo) getBranches() []string {
+ var all []string
+ var heads []string
+ var remotes []string
+ heads = listFiles(filepath.Join(repo.GetFullPath(), "/.git/refs/heads"))
+ remotes = listFiles(filepath.Join(repo.GetFullPath(), "/.git/refs/remotes"))
+
+ all = heads
+
+ all = append(all, remotes...)
+
+ // for _, branch := range all {
+ // log.Info("getBranches()", branch)
+ // }
+ return all
+}
+
+// goes in one directory so it gets remote branch names
+// old code. todo: modernize it
+func listFiles(directory string) []string {
+ var files []string
+ fileInfo, err := os.ReadDir(directory)
+ if err != nil {
+ log.Error(err)
+ return nil
+ }
+
+ for _, file := range fileInfo {
+ if file.IsDir() {
+ dirname := file.Name()
+ newdir, _ := os.ReadDir(directory + "/" + dirname)
+ for _, file := range newdir {
+ if !file.IsDir() {
+ files = append(files, dirname+"/"+file.Name())
+ }
+ }
+ } else {
+ files = append(files, file.Name())
+ }
+ }
+
+ return files
+}