//! Strongly typed git repository explorer //! //! This library provides a more Rustic interface for git //! repositories, built on the `git2` bindings. If you want more //! low-level access to your repository, consider using that library //! instead. //! //! supergit aims to make queries into a git repo as typed and easy as //! possible. Start by creating a //! [`Repository`](struct.Repository.html), and enumerating or //! fetching [`Branch`](struct.Branch.html)es that you are interested //! in. //! //! ```no_run //! use supergit::Repository; //! let r = Repository::open("/path/to/repo").unwrap(); //! println!("{:?}", r.branches()); //! //! let branch = r.branch("main").unwrap(); //! let head = branch.head(); //! println!("{}: {}", head.id(), head.summary().unwrap_or("".into())); //! ``` //! //! ## Library structure //! //! The main abstraction layer for a repository is a set of iterators, //! over branches, commits, and files in commit trees. Some functions //! implemented in `supergit` are quite computationally intensive; //! they are marked as such with their runtime cost! //! //! It's recommended to include [`supergit::prelude`](crate::prelude) //! to get started with development. pub mod branch; mod commit; pub use commit::Commit; mod diff; pub use diff::Diff; mod repo; pub(crate) use repo::HashId; pub use repo::Repository; pub mod files; /// Contains all core functions and types in supergit pub mod prelude { pub use crate::branch::{Branch, BranchIter}; pub use crate::files::{EntryType, Explorer, TreeEntry}; pub use crate::{Commit, Diff, Repository}; }