fangorn/ex_git_objectstore
public
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_detailedcapability - ACK/NAK/ACK common/ACK ready protocol implemented per git docs
- Packfile only contains objects the client doesn’t have
- Interop test:
git fetchfrom a repo with shared history transfers minimal data - Backward compatible: NAK-only still works for clients that don’t request it