Fast implementation of Git in pure Go

*: Fix lints

runxiyu.tngl.sh cf02f295 2f427535

verified
+34 -12
+6 -1
format/pack/ingest/idx_write.go
··· 171 171 offsetMeter.Stop("done") 172 172 } 173 173 174 + total, err := intconv.IntToUint64(largeOffsetCount) 175 + if err != nil { 176 + return err 177 + } 178 + 174 179 largeOffsetMeter := progress.New(progress.Options{ 175 180 Writer: state.opts.Progress, 176 181 Flush: state.opts.ProgressFlush, 177 182 Title: "writing index large offsets", 178 - Total: uint64(largeOffsetCount), 183 + Total: total, 179 184 }) 180 185 181 186 var largeOffsetDone uint64
+13 -4
internal/progress/counters.go
··· 1 1 package progress 2 2 3 - import "fmt" 3 + import ( 4 + "fmt" 5 + 6 + "codeberg.org/lindenii/furgit/internal/intconv" 7 + ) 4 8 5 9 func (meter *Meter) renderCounters() string { 6 10 if meter.total > 0 { 7 - percent := int(meter.lastDone * 100 / meter.total) 8 - meter.lastPercent = percent 11 + u, err := intconv.Uint64ToInt(meter.lastDone * 100 / meter.total) 12 + if err != nil { 13 + return "overflow" 14 + // TODO 15 + } 9 16 10 - return fmt.Sprintf("%3d%% (%d/%d)%s", percent, meter.lastDone, meter.total, meter.throughputSuffix) 17 + meter.lastPercent = u 18 + 19 + return fmt.Sprintf("%3d%% (%d/%d)%s", meter.lastPercent, meter.lastDone, meter.total, meter.throughputSuffix) 11 20 } 12 21 13 22 return fmt.Sprintf("%d%s", meter.lastDone, meter.throughputSuffix)
+4 -4
internal/progress/render.go
··· 16 16 17 17 counters := meter.renderCounters() 18 18 19 - clear := 0 19 + clear1 := 0 20 20 if len(counters) < meter.lastCounterW { 21 - clear = meter.lastCounterW - len(counters) + 1 21 + clear1 = meter.lastCounterW - len(counters) + 1 22 22 } 23 23 24 24 meter.lastCounterW = len(counters) 25 25 26 26 line := meter.title + ": " + counters 27 - if clear > 0 { 28 - line += strings.Repeat(" ", clear) 27 + if clear1 > 0 { 28 + line += strings.Repeat(" ", clear1) 29 29 } 30 30 31 31 line += eol
+10 -2
internal/progress/set.go
··· 1 1 package progress 2 2 3 - import "time" 3 + import ( 4 + "time" 5 + 6 + "codeberg.org/lindenii/furgit/internal/intconv" 7 + ) 4 8 5 9 // Set records current progress and renders when percent changed or the 1s tick 6 10 // elapsed. ··· 19 23 percentChanged := false 20 24 21 25 if meter.total > 0 { 22 - percent := int(done * 100 / meter.total) 26 + percent, err := intconv.Uint64ToInt(done * 100 / meter.total) 27 + if err != nil { 28 + return // TODO 29 + } 30 + 23 31 percentChanged = percent != meter.lastPercent 24 32 } 25 33
+1 -1
objectstore/packed/store_lookup.go
··· 28 28 return loc, nil 29 29 } 30 30 31 - if store.refreshPolicy == RefreshPolicyOnMissing { 31 + if store.refreshPolicy == RefreshPolicyOnMissing { //nolint:nestif 32 32 err = store.Refresh() 33 33 if err != nil { 34 34 return zero, err