anvilsign in

collin/anvil

main / vendor / gitserver-core / VENDOR.md

RenderedSource

1# Vendored: gitserver-core
2
3This is a vendored, modified copy of the `gitserver-core` crate from
4[WJQSERVER/gitserver](https://github.com/WJQSERVER/gitserver), which implements
5the server side of the git wire protocol (pkt-line, protocol v2 `ls-refs` /
6`fetch` / `upload-pack`, and `receive-pack`) on top of `gix` — the piece gix
7itself does not provide.
8
9- **Upstream commit:** `3cec05b02eea3220c67782e4d9d0404d8b001aa3` (2026-04-27),
10 which is still upstream's `main` HEAD as of 2026-08-25 — nothing to pull.
11 The newest upstream tag, `v0.0.3`, is *older* than this commit.
12- **License:** MPL-2.0 (see `LICENSE`); upstream MIT material noted in
13 `UPSTREAM-LICENSE` / `NOTICE`. MPL is file-level copyleft: modifications to
14 these files stay MPL, but anvil as a whole may carry its own license.
15
16## Why vendored
17
18We vendor rather than depend on crates.io so we can (1) bump `gix` from the
19upstream-pinned 0.80 to the workspace version (0.87) and keep it in lockstep
20with the rest of anvil, and (2) modify the protocol code as `anvil-git` evolves.
21
22The gix gap only widens: upstream has been on 0.80 since April, so each gix
23bump here is ours to port, and checking upstream first is cheap but has so far
24never produced anything.
25
26`anvil-git` wraps this crate behind its own interface so the dependency can be
27incrementally replaced with an upstream-shaped, gix-native implementation.
28
29## Local modifications
30
31- `Cargo.toml`: standalone manifest using the anvil workspace's `gix` (0.87) and
32 `gix-pack` (0.74) instead of upstream's pinned 0.80 / 0.67.
33- `Cargo.toml`: `[lints] workspace = true`, so the vendored crate is held to
34 anvil's lint configuration like any other member.
35- Source changes required by the gix version bump are recorded in git history.