| 1 | //! Server-side git wire protocol for anvil. |
| 2 | //! |
| 3 | //! `gix` provides object/ref/pack *plumbing* but no server-side protocol: it |
| 4 | //! ships no `upload-pack`/`receive-pack` and its `gix-transport`/`gix-protocol` |
| 5 | //! crates are client-only. This crate fills that gap. |
| 6 | //! |
| 7 | //! ## Design |
| 8 | //! - **Transport-agnostic.** [`smart_http`] takes a repo path plus request bytes |
| 9 | //! and returns response bytes / a packfile stream, with no HTTP dependency, so |
| 10 | //! the same engine serves smart-HTTP (`anvil-web`) and, later, SSH |
| 11 | //! (`anvil-ssh`). |
| 12 | //! - **Bootstrapped on [`gitserver_core`]** (vendored, gix-native pkt-line / |
| 13 | //! protocol-v2 / upload-pack / receive-pack), behind this crate's interface so |
| 14 | //! it can be replaced incrementally with an upstream-shaped implementation. |
| 15 | |
| 16 | pub mod browse; |
| 17 | pub mod error; |
| 18 | pub mod smart_http; |
| 19 | pub mod ssh; |
| 20 | pub mod trigger; |
| 21 | |
| 22 | pub use error::{ |
| 23 | Error, |
| 24 | Result, |
| 25 | }; |
| 26 | pub use smart_http::{ |
| 27 | Service, |
| 28 | UploadPack, |
| 29 | }; |