diff options
| author | Jeff Carr <[email protected]> | 2025-01-05 04:54:05 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-01-05 04:54:05 -0600 |
| commit | 79ec3ce469623e70bb8ee29218e0bb1aaae8c39a (patch) | |
| tree | 73a302176b63b2937fb757d402c6be522bd06fcb /applyPatch.go | |
| parent | 92ff05cf6fe09578538bb7dde0769d2f72d018a6 (diff) | |
stop apply if repos are dirty
Diffstat (limited to 'applyPatch.go')
| -rw-r--r-- | applyPatch.go | 74 |
1 files changed, 59 insertions, 15 deletions
diff --git a/applyPatch.go b/applyPatch.go index e08bc6c..2824407 100644 --- a/applyPatch.go +++ b/applyPatch.go @@ -8,10 +8,12 @@ import ( "go.wit.com/lib/gui/shell" "go.wit.com/lib/protobuf/forgepb" + "go.wit.com/lib/protobuf/gitpb" "go.wit.com/log" ) -func dumpPatchset(pset *forgepb.Patchs) error { +// returns bad if patches can not be applied +func dumpPatchset(pset *forgepb.Patchs) bool { log.Info("applyPatches() NAME", pset.Name) log.Info("applyPatches() COMMENT", pset.Comment) log.Info("applyPatches() GIT_AUTHOR_NAME", pset.GetGitAuthorName()) @@ -20,28 +22,70 @@ func dumpPatchset(pset *forgepb.Patchs) error { log.Info("applyPatches() Start Hash", pset.GetStartBranchHash()) var count int + var bad int all := pset.SortByFilename() for all.Scan() { p := all.Next() - // log.Info("pset filename FILENAME IS REAL?", p.Filename, pset.Name, pset.Comment) - basepath, filename := filepath.Split(p.Filename) - repo := me.forge.FindByGoPath(basepath) - if repo == nil { - log.Info("can not apply patch! repo not found", basepath, filename) - continue - } - if repo.DevelHash() != p.StartHash { - log.Info("can not apply patch! devel hash mismatch", basepath, filename) - continue + if IsValidPatch(p) { + // ok + } else { + bad += 1 } - log.Info("start:", p.StartHash, "end:", p.CommitHash, "file:", basepath, filename, "devel version", repo.GetDevelVersion()) count += 1 } - log.Info("pset has", count, "patches") - return nil + log.Info("pset has", count, "total patches, ", bad, "bad patches") + if bad == 0 { + return true + } + return false +} + +func IsValidPatch(p *forgepb.Patch) bool { + basepath, filename := filepath.Split(p.Filename) + repo := me.forge.FindByGoPath(basepath) + if repo == nil { + log.Info("can not apply patch! repo not found", basepath, filename) + return false + } + if repo.DevelHash() != p.StartHash { + log.Info("can not apply patch! devel hash mismatch", basepath, filename) + return false + } + log.Info("start:", p.StartHash, "end:", p.CommitHash, "file:", basepath, filename, "devel version", repo.GetDevelVersion()) + for _, line := range p.Files { + log.Info("\t", line) + } + return true +} + +// re-run git CheckDirty() on everything +func IsAnythingDirty() bool { + me.found = new(gitpb.Repos) + findAll() // select all the repos + doCheckDirty() + me.found = new(gitpb.Repos) + findDirty() + if len(me.found.Repos) == 0 { + return false + } else { + return true + } +} + +// From 18ee541f89be2e9f9a91c54873da87885e8ffdf5 Mon Sep 17 00:00:00 2001 +// From: Jeff Carr <[email protected]> +// Date: Sun, 5 Jan 2025 01:18:47 -0600 +// Subject: [PATCH] 'forge dirty' will find and list only dirty repos + +// list patches in jcarr but not in devel +// git log --format="%H %Subject" jcarr --not devel +func countCurrentPatches(repo *gitpb.Repo) int { + cmd := []string{"git", "log", "--format=\"%H %s\"", "--no-merges", "jcarr", "--not", "devel"} + result := repo.Run(cmd) + return len(result.Stdout) } -func applyPatches(pset *forgepb.Patchs) error { +func applyPatchset(pset *forgepb.Patchs) error { var everythingworked bool = true tmpdir, err := os.MkdirTemp("", "forge") if err != nil { |
