diff options
| author | 2026-03-08 14:25:33 +0800 | |
|---|---|---|
| committer | 2026-03-08 14:33:27 +0800 | |
| commit | b90caf8f6606cdecd8529dc365b53584ee402d8c (patch) | |
| tree | 83948ab366637e20cbce812b63f10448e9ced2f1 /format/pack/ingest/rev_write.go | |
| parent | TODO: Flush (diff) | |
| signature | No signature | |
format/pack/ingest: Write index progress too v0.1.79
Diffstat (limited to 'format/pack/ingest/rev_write.go')
| -rw-r--r-- | format/pack/ingest/rev_write.go | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/format/pack/ingest/rev_write.go b/format/pack/ingest/rev_write.go index 5a2f5375..9ed8dc6c 100644 --- a/format/pack/ingest/rev_write.go +++ b/format/pack/ingest/rev_write.go @@ -5,6 +5,7 @@ import ( "slices" "codeberg.org/lindenii/furgit/internal/intconv" + "codeberg.org/lindenii/furgit/internal/progress" ) const ( @@ -33,6 +34,7 @@ func writeRev(state *ingestState) error { } var scratch [8]byte + writeProgress(state, "writing reverse index header...\r") binary.BigEndian.PutUint32(scratch[:4], revMagic) err = writeAndHash(state.revFile, hashImpl, scratch[:4]) @@ -53,6 +55,15 @@ func writeRev(state *ingestState) error { if err != nil { return err } + writeProgress(state, "writing reverse index header: done.\n") + + entriesMeter := progress.New(progress.Options{ + Writer: state.opts.Progress, + Flush: state.opts.ProgressFlush, + Title: "writing reverse index entries", + Total: uint64(len(packOrder)), + }) + var entriesDone uint64 for _, recordIdx := range packOrder { recordPos, err := intconv.IntToUint32(recordToIdxPos[recordIdx]) @@ -66,7 +77,14 @@ func writeRev(state *ingestState) error { if err != nil { return err } + entriesDone++ + entriesMeter.Set(entriesDone, 0) } + if entriesDone > 0 { + entriesMeter.Stop("done") + } + + writeProgress(state, "writing reverse index trailer...\r") err = writeAndHash(state.revFile, hashImpl, state.packHash.Bytes()) if err != nil { @@ -80,7 +98,13 @@ func writeRev(state *ingestState) error { return err } - return state.revFile.Sync() + err = state.revFile.Sync() + if err != nil { + return err + } + writeProgress(state, "writing reverse index trailer: done.\n") + + return nil } // buildPackOrder returns record indexes sorted by pack offset. |
