1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//! Heroforge repository synchronization.
//!
//! This module implements the Heroforge sync protocol for pushing and pulling
//! artifacts between repositories over QUIC.
//!
//! # Protocol Overview
//!
//! Heroforge sync uses a simple line-oriented protocol:
//!
//! 1. Client sends login credentials and push/pull cards
//! 2. Client sends igot cards for artifacts it has
//! 3. Client sends gimme cards for artifacts it wants
//! 4. Server responds with file cards containing requested artifacts
//! 5. Server sends igot cards for artifacts client doesn't have
//!
//! # Example (Builder API)
//!
//! ```no_run
//! use heroforge_core::Repository;
//!
//! let repo = Repository::open("local.forge")?;
//!
//! // Sync over QUIC
//! repo.sync()
//! .to("quic://example.com:4443/repo")
//! .push()?;
//! # Ok::<(), heroforge_core::FossilError>(())
//! ```
pub use ;
pub use SyncClient;
pub use ;
pub use ;