summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--repo.new.go48
1 files changed, 42 insertions, 6 deletions
diff --git a/repo.new.go b/repo.new.go
index e9327d3..fa1d258 100644
--- a/repo.new.go
+++ b/repo.new.go
@@ -4,8 +4,10 @@ import (
"errors"
"os"
"path/filepath"
+ "time"
"go.wit.com/log"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
)
// scans in a new git repo. If it detects the repo is a golang project,
@@ -41,10 +43,8 @@ func (all *Repos) NewGoPath(basepath string, gopath string, url string) (*Repo,
URL: url,
}
newr.Tags = new(GitTags)
- // newr.UpdateGit()
newr.UpdateGitTags()
newr.GoDeps = new(GoDeps)
- // newr.RedoGoMod()
switch newr.goListRepoType() {
case "plugin":
@@ -57,14 +57,22 @@ func (all *Repos) NewGoPath(basepath string, gopath string, url string) (*Repo,
newr.GoBinary = true
}
+ lastpull, err := newr.LastGitPull()
+ if err == nil {
+ newr.LastPull = timestamppb.New(lastpull)
+ }
+
if all.AppendUniqueGoPath(&newr) {
// worked
return &newr, nil
+ } else {
+ // this is dumb, probably never happens. todo: use Repos.Lock()
+ if r := all.FindByGoPath(gopath); r != nil {
+ // already had this gopath
+ return r, errors.New("gitpb.NewGoPath() AppendUnique() failed but Find() worked" + gopath)
+ }
}
- if r := all.FindByGoPath(gopath); r != nil {
- // already had this gopath
- return r, errors.New("gitpb.NewGoPath() AppendUnique() failed but Find() worked" + gopath)
- }
+ // todo: use Repos.Lock()
return nil, errors.New("repo gitpb.NewGoPath() should never have gotten here " + gopath)
}
@@ -75,3 +83,31 @@ func (repo *Repo) SetDevelBranchName(bname string) {
func (repo *Repo) SetUserBranchName(bname string) {
repo.UserBranchName = bname
}
+
+func (repo *Repo) GitChanged() bool {
+ fullfile := filepath.Join(repo.FullPath, ".git/FETCH_HEAD")
+ lasttime, err := repo.LastGitPull()
+ if err == nil {
+ // if error, something is wrong, assume true
+ log.Info("gitpb:", fullfile, "changed")
+ return true
+ }
+ newtime := repo.LastPull.AsTime()
+
+ if lasttime == newtime {
+ return false
+ }
+ log.Info("gitpb:", fullfile, "changed")
+ return true
+}
+
+func (repo *Repo) GitPullAge() time.Duration {
+ lastpull, err := repo.LastGitPull()
+ if err == nil {
+ // if error, something is wrong, assume true
+ ltime := repo.LastPull.AsTime()
+ return time.Since(ltime)
+ }
+
+ return time.Since(lastpull)
+}