fangorn/ex_git_objectstore
public
ref:356dcdd3831b9f05c34aebcf48f08852eb250e20
fix(protocol): shallow push support, v2 negotiation state, submodule mode 160000, and atomic tags (#54)
### Summary of Changes
1. **Shallow Client Push Support**:
- Supported `shallow <oid>` lines sent by shallow git clients before ref update commands in `ReceivePack`.
- Updated `ci/pin_bump.exs` to use standard full clone.
2. **Git Protocol v2 Multi-Round Negotiation State**:
- Preserved `wants`, `haves`, `filter_spec`, and `shallow_opts` across negotiation rounds in `UploadPackV2`.
3. **Submodule Mode 160000 Reachability**:
- Handled gitlink tree entries in `UploadPack` tree walker.
4. **Smart-HTTP & Interop**:
- Added integration test suite verifying shallow push, atomic push, and branch deletion with real `git` binary.
SHA:
356dcdd3831b9f05c34aebcf48f08852eb250e20
Author:
Anvil <noreply@anvil.fangorn.io>
Date:
2026-08-31 04:52
Parents:
4a083f2
5 files changed
+96
-9
| Type | ||
|---|---|---|
|
|
ci/pin_bump.exs | +1 −1 |
|
||
|
|
lib/ex_git_objectstore/pack/writer.ex | +2 −2 |
|
||
|
|
lib/ex_git_objectstore/protocol/receive_pack.ex | +11 −6 |
|
||
|
|
test/ex_git_objectstore/integration/smart_http_test.exs | +35 −0 |
|
||
|
|
test/ex_git_objectstore/protocol/receive_pack_test.exs | +47 −0 |
|
||