summaryrefslogtreecommitdiff
path: root/applyPatch.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-01-05 04:54:05 -0600
committerJeff Carr <[email protected]>2025-01-05 04:54:05 -0600
commit79ec3ce469623e70bb8ee29218e0bb1aaae8c39a (patch)
tree73a302176b63b2937fb757d402c6be522bd06fcb /applyPatch.go
parent92ff05cf6fe09578538bb7dde0769d2f72d018a6 (diff)
stop apply if repos are dirty
Diffstat (limited to 'applyPatch.go')
-rw-r--r--applyPatch.go74
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 {