aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-08 03:22:51 +0800
committerGravatar Runxi Yu2026-03-08 03:22:51 +0800
commit399530fa393b7a23a01e1546273f9abea9c8e87a (patch)
tree7548ad72b3ebc9569a7b1a43116c6bd5545e0658
parentinternal/utils: Add WriteProgressf (diff)
signatureNo signature
receivepack: Add basic progress logging
-rw-r--r--receivepack/receivepack.go1
-rw-r--r--receivepack/service/ingest_quarantine.go20
-rw-r--r--receivepack/service/options.go2
3 files changed, 23 insertions, 0 deletions
diff --git a/receivepack/receivepack.go b/receivepack/receivepack.go
index d4a3f6fb..42095e1b 100644
--- a/receivepack/receivepack.go
+++ b/receivepack/receivepack.go
@@ -89,6 +89,7 @@ func ReceivePack(
Refs: opts.Refs,
ExistingObjects: opts.ExistingObjects,
ObjectsRoot: opts.ObjectsRoot,
+ Progress: progressWriter,
PromotedObjectPermissions: translatePromotedObjectPermissions(
opts.PromotedObjectPermissions,
),
diff --git a/receivepack/service/ingest_quarantine.go b/receivepack/service/ingest_quarantine.go
index c41f6c86..921ce217 100644
--- a/receivepack/service/ingest_quarantine.go
+++ b/receivepack/service/ingest_quarantine.go
@@ -4,6 +4,7 @@ import (
"os"
"codeberg.org/lindenii/furgit/format/pack/ingest"
+ "codeberg.org/lindenii/furgit/internal/utils"
)
func (service *Service) ingestQuarantine(
@@ -15,7 +16,11 @@ func (service *Service) ingestQuarantine(
return "", nil, true
}
+ utils.WriteProgressf(service.opts.Progress, "receiving objects: ingesting pack\n")
+
if req.Pack == nil {
+ utils.WriteProgressf(service.opts.Progress, "receiving objects: unpack failed: missing pack stream\n")
+
result.UnpackError = "missing pack stream"
fillCommandErrors(result, commands, "missing pack stream")
@@ -23,6 +28,8 @@ func (service *Service) ingestQuarantine(
}
if service.opts.ObjectsRoot == nil {
+ utils.WriteProgressf(service.opts.Progress, "receiving objects: unpack failed: objects root not configured\n")
+
result.UnpackError = "objects root not configured"
fillCommandErrors(result, commands, "objects root not configured")
@@ -31,6 +38,8 @@ func (service *Service) ingestQuarantine(
quarantineName, quarantineRoot, err := service.createQuarantineRoot()
if err != nil {
+ utils.WriteProgressf(service.opts.Progress, "receiving objects: unpack failed: %v\n", err)
+
result.UnpackError = err.Error()
fillCommandErrors(result, commands, err.Error())
@@ -39,6 +48,8 @@ func (service *Service) ingestQuarantine(
quarantinePackRoot, err := service.openQuarantinePackRoot(quarantineRoot)
if err != nil {
+ utils.WriteProgressf(service.opts.Progress, "receiving objects: unpack failed: %v\n", err)
+
result.UnpackError = err.Error()
fillCommandErrors(result, commands, err.Error())
@@ -56,12 +67,15 @@ func (service *Service) ingestQuarantine(
FixThin: true,
WriteRev: true,
Base: service.opts.ExistingObjects,
+ Progress: service.opts.Progress,
},
)
_ = quarantinePackRoot.Close()
if err != nil {
+ utils.WriteProgressf(service.opts.Progress, "receiving objects: unpack failed: %v\n", err)
+
result.UnpackError = err.Error()
fillCommandErrors(result, commands, err.Error())
@@ -71,6 +85,12 @@ func (service *Service) ingestQuarantine(
return "", nil, false
}
+ utils.WriteProgressf(
+ "receiving objects: unpack ok, %d objects (%s)\n",
+ ingested.ObjectCount,
+ ingested.PackHash,
+ )
+
result.Ingest = &ingested
return quarantineName, quarantineRoot, true
diff --git a/receivepack/service/options.go b/receivepack/service/options.go
index b8dda2f7..ec451ebf 100644
--- a/receivepack/service/options.go
+++ b/receivepack/service/options.go
@@ -1,6 +1,7 @@
package service
import (
+ "io"
"io/fs"
"os"
@@ -20,6 +21,7 @@ type Options struct {
Refs refstore.ReadWriteStore
ExistingObjects objectstore.Store
ObjectsRoot *os.Root
+ Progress io.Writer
PromotedObjectPermissions *PromotedObjectPermissions
Hook Hook
HookIO HookIO