//! Clone into a new bare repository or an ordinary repository without checkout.
//!
//! Start with [`CloneRequest::prepare_tracking`] to choose the destination, layout, origin URL,
//! branch policy, and reflog policy. Transfer from an explicit endpoint, then call
//! [`CloneReady::finish`] to create the repository and publish its initial refs. [`ClonePlan`]
//! describes the selected advertisement; [`CloneReport`] and [`CloneError`] identify completed
//! phases when publication is incomplete.
//!
//! Preparation selects all branches and tags from the actual transfer advertisement. Both layouts
//! use `refs/remotes/origin/*`; bare clone does not copy every branch into `refs/heads/*`.
//! No index or worktree files are created. An ordinary clone therefore has an absent index,
//! and Git status can show tracked files as deleted until the caller performs a checkout.
//!
//! Transfer and validation have no destination effects. Finish reports completed phases and
//! preserves residual state on failure; it never rolls back or deletes the destination. See
//! `examples/clone_repository.rs` for a disposable local workflow. HTTP/SSH return owned downloads
//! for validation on caller-managed bounded workers, exactly as the fetch adapters do.
pub use CloneDownload;
pub use ;
pub use ;