summaryrefslogtreecommitdiff
path: root/stat.makeRemote.go
diff options
context:
space:
mode:
Diffstat (limited to 'stat.makeRemote.go')
-rw-r--r--stat.makeRemote.go82
1 files changed, 34 insertions, 48 deletions
diff --git a/stat.makeRemote.go b/stat.makeRemote.go
index 685238a..f583d2d 100644
--- a/stat.makeRemote.go
+++ b/stat.makeRemote.go
@@ -22,7 +22,7 @@ func (r *Repo) LoadRemote(remoteName string) (*Stats, error) {
return stats, err
}
-var standardFmts []string = []string{"H", "T", "at", "ct", "f"}
+var standardFmts []string = []string{"H", "T", "at", "ct", "f", "d"}
var standardSeperator string = "___FORGE___"
func makeFmts() string {
@@ -35,6 +35,31 @@ func makeFmts() string {
return "--format=" + strings.Join(all, standardSeperator)
}
+func makeStat(line string) *Stat {
+ line = strings.TrimSpace(line)
+ parts := strings.Split(line, standardSeperator)
+ if len(parts) != 6 {
+ log.Printf("BAD LINE: len(%d) %s\n", len(parts), line)
+ return nil
+ }
+ newstat := new(Stat)
+ newstat.Hash = parts[0]
+ newstat.TreeHash = parts[1]
+ t, err := cobol.GetTime(parts[2])
+ _ = err
+ if t != nil {
+ newstat.AuthorTime = timestamppb.New(*t)
+ }
+ t, err = cobol.GetTime(parts[3])
+ if t != nil {
+ newstat.CommitTime = timestamppb.New(*t)
+ }
+ newstat.SanitizedSubject = parts[4]
+ newstat.Tags = parts[5]
+
+ return newstat
+}
+
// makes a new file. File must be empty at start
func (r *Repo) MakeRemote(remoteName string) (*Stats, error) {
stats, err := r.LoadRemote(remoteName)
@@ -42,9 +67,10 @@ func (r *Repo) MakeRemote(remoteName string) (*Stats, error) {
return stats, err
}
if stats.Len() != 0 {
- return stats, errors.New("refs file was already created")
+ // file was already created and populated with data
+ return stats, nil
}
- cmd := []string{"git", "log", "-n", "100", makeFmts(), "origin/HEAD"} // HEAD is _NOT_ always set
+ cmd := []string{"git", "log", makeFmts(), "origin/HEAD"} // HEAD is _NOT_ always set
if env.True("stats") {
log.Info("STATS VERBOSE Run:", cmd)
}
@@ -54,31 +80,11 @@ func (r *Repo) MakeRemote(remoteName string) (*Stats, error) {
}
var counter int
for _, line := range cmdout.Stdout {
- line = strings.TrimSpace(line)
- parts := strings.Split(line, standardSeperator)
- if len(parts) != 5 {
- log.Printf("Repo: %s len(%d)\n", r.FullPath, len(parts))
- log.Printf("CMD: %v\n", cmd)
- log.Printf("LINE:%s\n", line)
- return stats, errors.New(line)
- }
if env.True("stats") {
- log.Printf("LINE:%v %d %s\n", parts, counter, r.FullPath)
+ log.Printf("LINE:%s %d %s\n", line, counter, r.FullPath)
}
counter += 1
- newstat := new(Stat)
- newstat.Hash = parts[0]
- newstat.TreeHash = parts[1]
- t, err := cobol.GetTime(parts[2])
- _ = err
- if t != nil {
- newstat.AuthorTime = timestamppb.New(*t)
- }
- t, err = cobol.GetTime(parts[3])
- if t != nil {
- newstat.CommitTime = timestamppb.New(*t)
- }
- newstat.SanitizedSubject = parts[4]
+ newstat := makeStat(line)
stats.Append(newstat)
}
if counter > 0 {
@@ -107,20 +113,12 @@ func (r *Repo) UpdateRemote(remoteName string) error {
}
var counter int
for _, line := range cmdout.Stdout {
- line = strings.TrimSpace(line)
- parts := strings.Split(line, standardSeperator)
- if len(parts) != 5 {
- log.Printf("Repo: %s len(%d)\n", r.FullPath, len(parts))
- log.Printf("CMD: %v\n", cmd)
- log.Printf("LINE:%s\n", line)
- return errors.New(line)
- }
if env.True("stats") {
- log.Printf("LINE:%v %d %s\n", parts, counter, r.FullPath)
+ log.Printf("LINE:%s %d %s\n", line, counter, r.FullPath)
}
counter += 1
- newstat := new(Stat)
- newstat.Hash = parts[0]
+ newstat := makeStat(line)
+ // TODO: convert this protobuf to raw binary, then do a raw BinarySearch() on the hash
n, found := slices.BinarySearchFunc(stats.Stats, newstat, func(a, b *Stat) int {
return strings.Compare(a.Hash, b.Hash)
})
@@ -130,18 +128,6 @@ func (r *Repo) UpdateRemote(remoteName string) error {
// log.Info("found", n)
continue
}
-
- newstat.TreeHash = parts[1]
- t, err := cobol.GetTime(parts[2])
- _ = err
- if t != nil {
- newstat.AuthorTime = timestamppb.New(*t)
- }
- t, err = cobol.GetTime(parts[3])
- if t != nil {
- newstat.CommitTime = timestamppb.New(*t)
- }
- newstat.SanitizedSubject = parts[4]
stats.Append(newstat)
}
if counter > 0 {