Share helpers that were copy-pasted across packages

Commit

Soph2mo ago
  • closeOnceReadCloser existed verbatim in the bootstrap, incremental, and replicate strategies; move it to gitproto as CloseOnce next to LimitPackReader (all strategies already depend on gitproto) and add the unit test it never had.
  • The byte formatter existed three times: syncer.formatBytes and bootstrap.humanBytes were identical, and gitproto.humanizeBytes was a slightly cruder variant (fixed one-decimal output, capped at GB). Keep the precision-tiered implementation as gitproto.HumanBytes and use it everywhere; pack-encode progress now formats like the rest of the progress output.
  • runSync and runReplicate carried the same plan-classification switch; extract classifyPlans. Replicate derives its relay subset from the returned push plans.
  • auth.Method duplicated gitproto.AuthMethod (identical single-method interfaces); alias it so the contract is declared once.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com Entire-Checkpoint: 96d8a7027ab3

Checkpoints

/goal simplify this repo, make sure to de-slop it continue until you are happy, make sure to backfill tests and validate any significant change. The output of this should be a PR with green CI, review

Claude CodeOpus 4.8[1m]
View session
Checkpoint 1