summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.go13
-rw-r--r--reloadCheckDirty.go16
2 files changed, 24 insertions, 5 deletions
diff --git a/config.go b/config.go
index 16d3048..06ffdc1 100644
--- a/config.go
+++ b/config.go
@@ -14,6 +14,19 @@ import (
"go.wit.com/log"
)
+var globalChanged bool
+var globalReason string
+
+func (all *Repos) SmartSave() error {
+ if !globalChanged {
+ return nil
+ }
+ log.Info("saved because", globalReason)
+ globalChanged = false
+ globalReason = ""
+ return all.Save()
+}
+
// write the repos.pb file
func (all *Repos) ConfigSave(fname string) error {
if all == nil {
diff --git a/reloadCheckDirty.go b/reloadCheckDirty.go
index 69b6e52..de7e512 100644
--- a/reloadCheckDirty.go
+++ b/reloadCheckDirty.go
@@ -44,9 +44,13 @@ func (repo *Repo) CheckDirty() bool {
log.Error(r.Error, "CheckDirty() git status error")
repo.NoteChange("git status is in error " + fmt.Sprint(r.Error))
repo.Dirty = true
- repo.State = "dirty"
+ repo.State = "dirty porcelain"
return true
}
+ if len(r.Stdout) == 0 {
+ repo.Dirty = false
+ repo.SmartSetState("")
+ }
// dirty if anything but go.mod and go.sum
var bad bool = false
for _, line := range r.Stdout {
@@ -68,9 +72,11 @@ func (repo *Repo) CheckDirty() bool {
repo.Times.LastDirty = pbnow
repo.Dirty = bad
if bad {
- return repo.SmartSetState("dirty")
- } else {
- return repo.SmartSetState("")
+ repo.Dirty = true
+ repo.SmartSetState("dirty")
+ return true
}
- return bad
+ repo.Dirty = false
+ repo.SmartSetState("")
+ return false
}