//! `radicle-surf` is a library to help users explore a Git repository with
//! ease. It supports browsing a repository via the concept of files and
//! directories, or via blobs and trees in a git fashion. With the additional
//! support of [`diff::Diff`] and [`History`], this library can be used to build
//! an intuitive UI for any Git repository.
//!
//! The main entry point of the library API is [`Repository`].
//!
//! Let's start surfing!
//!
//! ## Serialization with feature `serde`
//!
//! Many types in this crate support serialization using [`Serde`][serde]
//! through the `serde` feature flag for this crate.
//!
//! [serde]: https://crates.io/crates/serde

/// Re-exports.
pub use radicle_git_ref_format;

/// Represents an object id in Git. Re-exported from `radicle-git-ext`.
pub type Oid = radicle_oid::Oid;

pub mod blob;
pub mod diff;
pub mod fs;
pub mod tree;

/// Private modules with their public types.
mod repo;
pub use repo::Repository;

mod glob;
pub use glob::Glob;

mod history;
pub use history::History;

mod branch;
pub use branch::{Branch, Local, Remote};

mod tag;
pub use tag::Tag;

mod commit;
pub use commit::{Author, Commit, Time};

mod namespace;
pub use namespace::Namespace;

mod stats;
pub use stats::Stats;

mod revision;
pub use revision::{Revision, Signature, ToCommit};

mod refs;

mod error;
pub use error::Error;

#[cfg(test)]
pub mod test;
