diff options
| author | Jeff Carr <[email protected]> | 2025-01-07 04:59:01 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-01-07 04:59:01 -0600 |
| commit | 2fe035fbf0e1d08f3c546bc100a723c5d6c314d6 (patch) | |
| tree | 2a1e5b937e0b9e7c0904f475ec06439fbddc4b99 /reloadBranches.go | |
| parent | 016335b322ea65ee33e9de85e6bb818bdbcd2e39 (diff) | |
migrate in some old code
Diffstat (limited to 'reloadBranches.go')
| -rw-r--r-- | reloadBranches.go | 116 |
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 +} |
