anvilsign in

collin/anvil

main / crates / anvil-git / src / lib.rs
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
16pub mod attachments_ref;
17pub mod browse;
18pub mod edit;
19pub mod error;
20pub mod mirror;
21pub mod push;
22pub mod smart_http;
23pub mod ssh;
24pub mod trigger;
25
26pub use error::{
27 Error,
28 Result,
29};
30pub use smart_http::{
31 Service,
32 UploadPack,
33};