shithub: furgit

Download patch

ref: 6820f071511ea90e04f759e6de02502ae828022f
parent: 9d7ccb0106499f22fb0c215e149e9ed63af891fc
author: Runxi Yu <me@runxiyu.org>
date: Sun Mar 8 09:33:47 EDT 2026

internal/utils: Rename WriteProgressf to FprintfBestEffort

--- a/format/pack/ingest/ingest.go
+++ b/format/pack/ingest/ingest.go
@@ -51,7 +51,7 @@
 		return Result{}, err
 	}
 
-	utils.WriteProgressf(state.opts.Progress, "writing index...\r")
+	utils.FprintfBestEffort(state.opts.Progress, "writing index...\r")
 
 	err = state.packFile.Sync()
 	if err != nil {
@@ -63,10 +63,10 @@
 		return Result{}, err
 	}
 
-	utils.WriteProgressf(state.opts.Progress, "writing index: done.\n")
+	utils.FprintfBestEffort(state.opts.Progress, "writing index: done.\n")
 
 	if state.opts.WriteRev {
-		utils.WriteProgressf(state.opts.Progress, "writing reverse index...\r")
+		utils.FprintfBestEffort(state.opts.Progress, "writing reverse index...\r")
 	}
 
 	err = writeRev(state)
@@ -75,7 +75,7 @@
 	}
 
 	if state.opts.WriteRev {
-		utils.WriteProgressf(state.opts.Progress, "writing reverse index: done.\n")
+		utils.FprintfBestEffort(state.opts.Progress, "writing reverse index: done.\n")
 	}
 
 	return finalizeArtifacts(state)
--- a/format/pack/ingest/resolve_all.go
+++ b/format/pack/ingest/resolve_all.go
@@ -26,7 +26,7 @@
 
 	var done uint32
 
-	utils.WriteProgressf(state.opts.Progress, "resolving deltas:   0%% (0/%d)\r", pending)
+	utils.FprintfBestEffort(state.opts.Progress, "resolving deltas:   0%% (0/%d)\r", pending)
 
 	for idx := range state.records {
 		if state.records[idx].resolved {
@@ -36,7 +36,7 @@
 		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)
+			utils.FprintfBestEffort(state.opts.Progress, "resolving deltas: %3d%% (%d/%d)\r", percent, done, pending)
 		}
 
 		visiting := make(map[int]struct{})
@@ -65,7 +65,7 @@
 		state.baseCache.add(idx, ty, content)
 	}
 
-	utils.WriteProgressf(state.opts.Progress, "resolving deltas: 100%% (%d/%d), done.\n", pending, pending)
+	utils.FprintfBestEffort(state.opts.Progress, "resolving deltas: 100%% (%d/%d), done.\n", pending, pending)
 
 	return nil
 }
--- a/format/pack/ingest/scan.go
+++ b/format/pack/ingest/scan.go
@@ -21,7 +21,7 @@
 		state.algo.Size(),
 	)
 
-	utils.WriteProgressf(state.opts.Progress, "validating pack header...\r")
+	utils.FprintfBestEffort(state.opts.Progress, "validating pack header...\r")
 
 	err = seedStreamWithPackHeader(state)
 	if err != nil {
@@ -28,7 +28,7 @@
 		return err
 	}
 
-	utils.WriteProgressf(state.opts.Progress, "validating pack header: done.\n")
+	utils.FprintfBestEffort(state.opts.Progress, "validating pack header: done.\n")
 
 	state.records = make([]objectRecord, 0, state.objectCountHeader)
 	state.ofsDeltas = make([]ofsDeltaRef, 0, state.objectCountHeader)
@@ -36,7 +36,7 @@
 
 	total := state.objectCountHeader
 	step := progressStep(total)
-	utils.WriteProgressf(state.opts.Progress, "receiving objects:   0%% (0/%d)\r", total)
+	utils.FprintfBestEffort(state.opts.Progress, "receiving objects:   0%% (0/%d)\r", total)
 
 	for i := range total {
 		nextOffset, err := scanOneEntry(state, state.stream.consumed)
@@ -51,11 +51,11 @@
 		done := i + 1
 		if done%step == 0 || done == total {
 			percent := done * 100 / total
-			utils.WriteProgressf(state.opts.Progress, "receiving objects: %3d%% (%d/%d)\r", percent, done, total)
+			utils.FprintfBestEffort(state.opts.Progress, "receiving objects: %3d%% (%d/%d)\r", percent, done, total)
 		}
 	}
 
-	utils.WriteProgressf(state.opts.Progress, "receiving objects: 100%% (%d/%d), done.\n", total, total)
+	utils.FprintfBestEffort(state.opts.Progress, "receiving objects: 100%% (%d/%d), done.\n", total, total)
 
 	err = state.stream.finishAndFlushTrailer(state.opts.RequireTrailingEOF)
 	if err != nil {
--- a/format/pack/ingest/thin_fix.go
+++ b/format/pack/ingest/thin_fix.go
@@ -13,7 +13,7 @@
 		return nil
 	}
 
-	utils.WriteProgressf(
+	utils.FprintfBestEffort(
 		state.opts.Progress,
 		"fixing thin pack: %d unresolved bases\r",
 		len(state.unresolvedRefDeltas),
@@ -57,7 +57,7 @@
 
 	total := len(baseIDs)
 	if total > 0 {
-		utils.WriteProgressf(state.opts.Progress, "fixing thin pack:   0%% (0/%d)\r", total)
+		utils.FprintfBestEffort(state.opts.Progress, "fixing thin pack:   0%% (0/%d)\r", total)
 	}
 
 	for i, id := range baseIDs {
@@ -75,7 +75,7 @@
 
 		done := i + 1
 		percent := done * 100 / total
-		utils.WriteProgressf(state.opts.Progress, "fixing thin pack: %3d%% (%d/%d)\r", percent, done, total)
+		utils.FprintfBestEffort(state.opts.Progress, "fixing thin pack: %3d%% (%d/%d)\r", percent, done, total)
 	}
 
 	err = rewritePackHeaderAndTrailer(state)
@@ -84,7 +84,7 @@
 	}
 
 	if state.thinFixed {
-		utils.WriteProgressf(state.opts.Progress, "fixing thin pack: 100%% (%d/%d), done.\n", total, total)
+		utils.FprintfBestEffort(state.opts.Progress, "fixing thin pack: 100%% (%d/%d), done.\n", total, total)
 	}
 
 	return nil
--- a/internal/utils/progress.go
+++ b/internal/utils/progress.go
@@ -6,10 +6,10 @@
 	"io"
 )
 
-// WriteProgressf writes one formatted progress message to w.
+// FprintfBestEffort writes one formatted message to w.
 //
 // It is nil-safe and ignores write errors by design.
-func WriteProgressf(w io.Writer, format string, args ...any) {
+func FprintfBestEffort(w io.Writer, format string, args ...any) {
 	if w == nil {
 		return
 	}
--- a/receivepack/service/apply.go
+++ b/receivepack/service/apply.go
@@ -8,7 +8,7 @@
 
 func (service *Service) applyAtomic(result *Result, commands []Command) error {
 	total := len(commands)
-	utils.WriteProgressf(service.opts.Progress, "updating refs: 0/%d\r", total)
+	utils.FprintfBestEffort(service.opts.Progress, "updating refs: 0/%d\r", total)
 
 	tx, err := service.opts.Refs.BeginTransaction()
 	if err != nil {
@@ -21,18 +21,18 @@
 			_ = tx.Abort()
 
 			fillCommandErrors(result, commands, err.Error())
-			utils.WriteProgressf(service.opts.Progress, "updating refs: failed at %d/%d.\n", i+1, total)
+			utils.FprintfBestEffort(service.opts.Progress, "updating refs: failed at %d/%d.\n", i+1, total)
 
 			return nil
 		}
 
-		utils.WriteProgressf(service.opts.Progress, "updating refs: %d/%d\r", i+1, total)
+		utils.FprintfBestEffort(service.opts.Progress, "updating refs: %d/%d\r", i+1, total)
 	}
 
 	err = tx.Commit()
 	if err != nil {
 		fillCommandErrors(result, commands, err.Error())
-		utils.WriteProgressf(service.opts.Progress, "updating refs: failed at commit.\n")
+		utils.FprintfBestEffort(service.opts.Progress, "updating refs: failed at commit.\n")
 
 		return nil
 	}
@@ -42,7 +42,7 @@
 		result.Commands = append(result.Commands, successCommandResult(command))
 	}
 
-	utils.WriteProgressf(service.opts.Progress, "updating refs: done.\n")
+	utils.FprintfBestEffort(service.opts.Progress, "updating refs: done.\n")
 
 	return nil
 }
@@ -50,7 +50,7 @@
 func (service *Service) applyBatch(result *Result, commands []Command) error {
 	total := len(commands)
 
-	utils.WriteProgressf(service.opts.Progress, "updating refs...\r")
+	utils.FprintfBestEffort(service.opts.Progress, "updating refs...\r")
 
 	batch, err := service.opts.Refs.BeginBatch()
 	if err != nil {
@@ -63,7 +63,7 @@
 
 	batchResults, err := batch.Apply()
 	if err != nil && len(batchResults) == 0 {
-		utils.WriteProgressf(service.opts.Progress, "updating refs: failed at apply.\n")
+		utils.FprintfBestEffort(service.opts.Progress, "updating refs: failed at apply.\n")
 
 		return err
 	}
@@ -82,15 +82,15 @@
 
 		result.Commands = append(result.Commands, item)
 
-		utils.WriteProgressf(service.opts.Progress, "updating refs: %d/%d\r", i+1, total)
+		utils.FprintfBestEffort(service.opts.Progress, "updating refs: %d/%d\r", i+1, total)
 	}
 
 	result.Applied = appliedAny
 
 	if failedCount == 0 {
-		utils.WriteProgressf(service.opts.Progress, "updating refs: done.\n")
+		utils.FprintfBestEffort(service.opts.Progress, "updating refs: done.\n")
 	} else {
-		utils.WriteProgressf(service.opts.Progress, "updating refs: failed (%d/%d).\n", failedCount, total)
+		utils.FprintfBestEffort(service.opts.Progress, "updating refs: failed (%d/%d).\n", failedCount, total)
 	}
 
 	return nil
--- a/receivepack/service/execute.go
+++ b/receivepack/service/execute.go
@@ -80,11 +80,11 @@
 	if req.PackExpected && quarantineRoot != nil {
 		// Git migrates quarantined objects into permanent storage immediately
 		// before starting ref updates.
-		utils.WriteProgressf(service.opts.Progress, "promoting quarantine...\r")
+		utils.FprintfBestEffort(service.opts.Progress, "promoting quarantine...\r")
 
 		err = service.promoteQuarantine(quarantineName, quarantineRoot)
 		if err != nil {
-			utils.WriteProgressf(service.opts.Progress, "promoting quarantine: failed: %v.\n", err)
+			utils.FprintfBestEffort(service.opts.Progress, "promoting quarantine: failed: %v.\n", err)
 
 			result.UnpackError = err.Error()
 			fillCommandErrors(result, req.Commands, err.Error())
@@ -92,7 +92,7 @@
 			return result, nil
 		}
 
-		utils.WriteProgressf(service.opts.Progress, "promoting quarantine: done.\n")
+		utils.FprintfBestEffort(service.opts.Progress, "promoting quarantine: done.\n")
 	}
 
 	if req.Atomic {
--- a/receivepack/service/ingest_quarantine.go
+++ b/receivepack/service/ingest_quarantine.go
@@ -17,7 +17,7 @@
 	}
 
 	if req.Pack == nil {
-		utils.WriteProgressf(service.opts.Progress, "unpack failed: missing pack stream.\n")
+		utils.FprintfBestEffort(service.opts.Progress, "unpack failed: missing pack stream.\n")
 
 		result.UnpackError = "missing pack stream"
 		fillCommandErrors(result, commands, "missing pack stream")
@@ -26,7 +26,7 @@
 	}
 
 	if service.opts.ObjectsRoot == nil {
-		utils.WriteProgressf(service.opts.Progress, "unpack failed: objects root not configured.\n")
+		utils.FprintfBestEffort(service.opts.Progress, "unpack failed: objects root not configured.\n")
 
 		result.UnpackError = "objects root not configured"
 		fillCommandErrors(result, commands, "objects root not configured")
@@ -45,7 +45,7 @@
 		},
 	)
 	if err != nil {
-		utils.WriteProgressf(service.opts.Progress, "unpack failed: %v.\n", err)
+		utils.FprintfBestEffort(service.opts.Progress, "unpack failed: %v.\n", err)
 
 		result.UnpackError = err.Error()
 		fillCommandErrors(result, commands, err.Error())
@@ -56,7 +56,7 @@
 	if pending.Header().ObjectCount == 0 {
 		discarded, err := pending.Discard()
 		if err != nil {
-			utils.WriteProgressf(service.opts.Progress, "unpack failed: %v.\n", err)
+			utils.FprintfBestEffort(service.opts.Progress, "unpack failed: %v.\n", err)
 
 			result.UnpackError = err.Error()
 			fillCommandErrors(result, commands, err.Error())
@@ -69,7 +69,7 @@
 			ObjectCount: discarded.ObjectCount,
 		}
 
-		utils.WriteProgressf(
+		utils.FprintfBestEffort(
 			service.opts.Progress,
 			"unpacking: done (%d objects, %s).\n",
 			discarded.ObjectCount,
@@ -79,11 +79,11 @@
 		return "", nil, true
 	}
 
-	utils.WriteProgressf(service.opts.Progress, "creating quarantine...\r")
+	utils.FprintfBestEffort(service.opts.Progress, "creating quarantine...\r")
 
 	quarantineName, quarantineRoot, err := service.createQuarantineRoot()
 	if err != nil {
-		utils.WriteProgressf(service.opts.Progress, "unpack failed: %v.\n", err)
+		utils.FprintfBestEffort(service.opts.Progress, "unpack failed: %v.\n", err)
 
 		result.UnpackError = err.Error()
 		fillCommandErrors(result, commands, err.Error())
@@ -93,7 +93,7 @@
 
 	quarantinePackRoot, err := service.openQuarantinePackRoot(quarantineRoot)
 	if err != nil {
-		utils.WriteProgressf(service.opts.Progress, "unpack failed: %v.\n", err)
+		utils.FprintfBestEffort(service.opts.Progress, "unpack failed: %v.\n", err)
 
 		result.UnpackError = err.Error()
 		fillCommandErrors(result, commands, err.Error())
@@ -104,8 +104,8 @@
 		return "", nil, false
 	}
 
-	utils.WriteProgressf(service.opts.Progress, "creating quarantine: done.\n")
-	utils.WriteProgressf(service.opts.Progress, "unpacking...\r")
+	utils.FprintfBestEffort(service.opts.Progress, "creating quarantine: done.\n")
+	utils.FprintfBestEffort(service.opts.Progress, "unpacking...\r")
 
 	ingested, err := pending.Continue(quarantinePackRoot)
 
@@ -112,7 +112,7 @@
 	_ = quarantinePackRoot.Close()
 
 	if err != nil {
-		utils.WriteProgressf(service.opts.Progress, "unpack failed: %v.\n", err)
+		utils.FprintfBestEffort(service.opts.Progress, "unpack failed: %v.\n", err)
 
 		result.UnpackError = err.Error()
 		fillCommandErrors(result, commands, err.Error())
@@ -123,7 +123,7 @@
 		return "", nil, false
 	}
 
-	utils.WriteProgressf(service.opts.Progress, "unpacking: done (%d objects, %s).\n", ingested.ObjectCount, ingested.PackHash)
+	utils.FprintfBestEffort(service.opts.Progress, "unpacking: done (%d objects, %s).\n", ingested.ObjectCount, ingested.PackHash)
 
 	result.Ingest = &ingested
 
--- a/receivepack/service/run_hook.go
+++ b/receivepack/service/run_hook.go
@@ -30,11 +30,11 @@
 		return allowedCommands, allowedIndices, rejected, true, ""
 	}
 
-	utils.WriteProgressf(service.opts.Progress, "running hooks...\r")
+	utils.FprintfBestEffort(service.opts.Progress, "running hooks...\r")
 
 	quarantinedObjects, err := service.openQuarantinedObjects(quarantineName)
 	if err != nil {
-		utils.WriteProgressf(service.opts.Progress, "running hooks: failed: %v.\n", err)
+		utils.FprintfBestEffort(service.opts.Progress, "running hooks: failed: %v.\n", err)
 
 		return nil, nil, nil, false, err.Error()
 	}
@@ -52,13 +52,13 @@
 		IO:                 service.opts.HookIO,
 	})
 	if err != nil {
-		utils.WriteProgressf(service.opts.Progress, "running hooks: failed: %v.\n", err)
+		utils.FprintfBestEffort(service.opts.Progress, "running hooks: failed: %v.\n", err)
 
 		return nil, nil, nil, false, err.Error()
 	}
 
 	if len(decisions) != len(commands) {
-		utils.WriteProgressf(service.opts.Progress, "running hooks: failed: wrong decision count.\n")
+		utils.FprintfBestEffort(service.opts.Progress, "running hooks: failed: wrong decision count.\n")
 
 		return nil, nil, nil, false, "hook returned wrong number of update decisions"
 	}
@@ -82,7 +82,7 @@
 		rejected[index] = message
 	}
 
-	utils.WriteProgressf(
+	utils.FprintfBestEffort(
 		service.opts.Progress,
 		"running hooks: done (%d/%d accepted).\n",
 		len(allowedCommands),
--