diff options
Diffstat (limited to 'format/pack/ingest/resolve_all.go')
| -rw-r--r-- | format/pack/ingest/resolve_all.go | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/format/pack/ingest/resolve_all.go b/format/pack/ingest/resolve_all.go index 992d87ae..e71d38d1 100644 --- a/format/pack/ingest/resolve_all.go +++ b/format/pack/ingest/resolve_all.go @@ -1,16 +1,41 @@ package ingest -import "errors" +import ( + "errors" + + "codeberg.org/lindenii/furgit/internal/utils" +) // resolveAll resolves all delta records and finalizes ObjectID/RealType for every record. func resolveAll(state *ingestState) error { state.unresolvedRefDeltas = state.unresolvedRefDeltas[:0] + var pending uint32 + for idx := range state.records { + if !state.records[idx].resolved { + pending++ + } + } + + if pending == 0 { + return nil + } + + step := progressStep(pending) + var done uint32 + utils.WriteProgressf(state.opts.Progress, "resolving deltas: 0%% (0/%d)\r", pending) + for idx := range state.records { if state.records[idx].resolved { continue } + done++ + if done%step == 0 || done == pending { + percent := done * 100 / pending + utils.WriteProgressf(state.opts.Progress, "resolving deltas: %3d%% (%d/%d)\r", percent, done, pending) + } + visiting := make(map[int]struct{}) ty, content, err := resolveRecord(state, idx, visiting) @@ -37,5 +62,7 @@ func resolveAll(state *ingestState) error { state.baseCache.add(idx, ty, content) } + utils.WriteProgressf(state.opts.Progress, "resolving deltas: 100%% (%d/%d), done.\n", pending, pending) + return nil } |
