ref:main

Implement multi_ack_detailed negotiation for upload-pack #6

open Opened by cole.christensen@gmail.com

Links

No links yet.

Problem

Upload-pack uses NAK-only negotiation. The server always sends a full packfile even when the client already has most objects. The multi_ack_detailed capability enables incremental negotiation to minimize transfer size.

Impact

  • Fetch operations transfer far more data than necessary
  • Particularly wasteful for frequent small fetches (CI, polling)
  • Standard git clients prefer multi_ack_detailed when available

Acceptance Criteria

  • Upload-pack advertises multi_ack_detailed capability
  • ACK/NAK/ACK common/ACK ready protocol implemented per git docs
  • Packfile only contains objects the client doesn’t have
  • Interop test: git fetch from a repo with shared history transfers minimal data
  • Backward compatible: NAK-only still works for clients that don’t request it