aboutsummaryrefslogtreecommitdiff
path: root/format/pack
diff options
context:
space:
mode:
Diffstat (limited to 'format/pack')
-rw-r--r--format/pack/ingest/idx_write.go20
-rw-r--r--format/pack/ingest/progress_write.go1
-rw-r--r--format/pack/ingest/rev_write.go6
3 files changed, 25 insertions, 2 deletions
diff --git a/format/pack/ingest/idx_write.go b/format/pack/ingest/idx_write.go
index 0523ac1d..91f70f3f 100644
--- a/format/pack/ingest/idx_write.go
+++ b/format/pack/ingest/idx_write.go
@@ -40,8 +40,11 @@ func writeIdx(state *ingestState) error {
return nil
}
- var scratch [8]byte
- var fanout [256]uint32
+ var (
+ scratch [8]byte
+ fanout [256]uint32
+ )
+
writeProgress(state, "writing index fanout...\r")
for _, recordIdx := range order {
@@ -51,6 +54,7 @@ func writeIdx(state *ingestState) error {
binary.BigEndian.PutUint32(scratch[:4], idxMagicV2)
binary.BigEndian.PutUint32(scratch[4:8], idxVersionV2)
+
err = write(scratch[:8])
if err != nil {
return err
@@ -66,9 +70,11 @@ func writeIdx(state *ingestState) error {
return err
}
}
+
writeProgress(state, "writing index fanout: done.\n")
largeOffsetCount := 0
+
for idx := range state.records {
if state.records[idx].offset >= 0x80000000 {
largeOffsetCount++
@@ -81,6 +87,7 @@ func writeIdx(state *ingestState) error {
Title: "writing index object ids",
Total: uint64(len(order)),
})
+
var oidDone uint64
for _, recordIdx := range order {
@@ -94,6 +101,7 @@ func writeIdx(state *ingestState) error {
oidDone++
oidMeter.Set(oidDone, 0)
}
+
if oidDone > 0 {
oidMeter.Stop("done")
}
@@ -104,6 +112,7 @@ func writeIdx(state *ingestState) error {
Title: "writing index crc32",
Total: uint64(len(order)),
})
+
var crcDone uint64
for _, recordIdx := range order {
@@ -117,6 +126,7 @@ func writeIdx(state *ingestState) error {
crcDone++
crcMeter.Set(crcDone, 0)
}
+
if crcDone > 0 {
crcMeter.Stop("done")
}
@@ -128,6 +138,7 @@ func writeIdx(state *ingestState) error {
Title: "writing index offsets",
Total: uint64(len(order)),
})
+
var offsetDone uint64
for _, recordIdx := range order {
@@ -155,6 +166,7 @@ func writeIdx(state *ingestState) error {
offsetDone++
offsetMeter.Set(offsetDone, 0)
}
+
if offsetDone > 0 {
offsetMeter.Stop("done")
}
@@ -165,7 +177,9 @@ func writeIdx(state *ingestState) error {
Title: "writing index large offsets",
Total: uint64(largeOffsetCount),
})
+
var largeOffsetDone uint64
+
for _, off := range largeOffsets {
binary.BigEndian.PutUint64(scratch[:8], off)
@@ -177,6 +191,7 @@ func writeIdx(state *ingestState) error {
largeOffsetDone++
largeOffsetMeter.Set(largeOffsetDone, 0)
}
+
if largeOffsetDone > 0 {
largeOffsetMeter.Stop("done")
}
@@ -199,6 +214,7 @@ func writeIdx(state *ingestState) error {
if err != nil {
return err
}
+
writeProgress(state, "writing index trailer: done.\n")
return nil
diff --git a/format/pack/ingest/progress_write.go b/format/pack/ingest/progress_write.go
index 3150032b..f372f9d0 100644
--- a/format/pack/ingest/progress_write.go
+++ b/format/pack/ingest/progress_write.go
@@ -4,6 +4,7 @@ import "codeberg.org/lindenii/furgit/internal/utils"
func writeProgress(state *ingestState, format string, args ...any) {
utils.BestEffortFprintf(state.opts.Progress, format, args...)
+
if state.opts.ProgressFlush != nil {
_ = state.opts.ProgressFlush()
}
diff --git a/format/pack/ingest/rev_write.go b/format/pack/ingest/rev_write.go
index 9ed8dc6c..9b9432dc 100644
--- a/format/pack/ingest/rev_write.go
+++ b/format/pack/ingest/rev_write.go
@@ -34,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)
@@ -55,6 +56,7 @@ func writeRev(state *ingestState) error {
if err != nil {
return err
}
+
writeProgress(state, "writing reverse index header: done.\n")
entriesMeter := progress.New(progress.Options{
@@ -63,6 +65,7 @@ func writeRev(state *ingestState) error {
Title: "writing reverse index entries",
Total: uint64(len(packOrder)),
})
+
var entriesDone uint64
for _, recordIdx := range packOrder {
@@ -77,9 +80,11 @@ func writeRev(state *ingestState) error {
if err != nil {
return err
}
+
entriesDone++
entriesMeter.Set(entriesDone, 0)
}
+
if entriesDone > 0 {
entriesMeter.Stop("done")
}
@@ -102,6 +107,7 @@ func writeRev(state *ingestState) error {
if err != nil {
return err
}
+
writeProgress(state, "writing reverse index trailer: done.\n")
return nil