Expand description
use nonempty::NonEmpty;
use radicle_surf::file_system::{Directory, File, Label, Path, SystemType};
use radicle_surf::file_system::unsound;
use radicle_surf::vcs::git::*;
use std::collections::HashMap;

let repo = Repository::new("./data/git-platinum")?;

// Pin the browser to a parituclar commit.
let pin_commit = Oid::from_str("3873745c8f6ffb45c990eb23b491d4b4b6182f95")?;
let mut browser = Browser::new(&repo, Branch::local("master"))?;
browser.commit(pin_commit)?;

let directory = browser.get_directory()?;
let mut directory_contents = directory.list_directory();
directory_contents.sort();

assert_eq!(directory_contents, vec![
    SystemType::file(unsound::label::new(".i-am-well-hidden")),
    SystemType::file(unsound::label::new(".i-too-am-hidden")),
    SystemType::file(unsound::label::new("README.md")),
    SystemType::directory(unsound::label::new("bin")),
    SystemType::directory(unsound::label::new("src")),
    SystemType::directory(unsound::label::new("text")),
    SystemType::directory(unsound::label::new("this")),
]);

// find src directory in the Git directory and the in-memory directory
let src_directory = directory
    .find_directory(Path::new(unsound::label::new("src")))
    .expect("failed to find src");
let mut src_directory_contents = src_directory.list_directory();
src_directory_contents.sort();

assert_eq!(src_directory_contents, vec![
    SystemType::file(unsound::label::new("Eval.hs")),
    SystemType::file(unsound::label::new("Folder.svelte")),
    SystemType::file(unsound::label::new("memory.rs")),
]);

Re-exports

pub use git2;
pub use branch::Branch;
pub use branch::BranchName;
pub use branch::BranchType;
pub use tag::Tag;
pub use tag::TagName;
pub use commit::Author;
pub use commit::Commit;
pub use namespace::Namespace;
pub use stats::Stats;
pub use crate::diff::Diff;

Modules

Provides the data for talking about branches.

Provides the data for talking about commits.

Collection of errors and helper instances that can occur when performing operations from crate::vcs::git.

Provides the data for talking about namespaces.

Provides the data for talking about repository statistics.

Provides the data for talking about tags.

Structs

A structure to represent errors coming out of libgit2.

Unique identity of any object (commit, tree, blob, tag).

Wrapper around the git2’s git2::Repository type. This is to to limit the functionality that we can do on the underlying object.

A reference-only Repository. This means that we cannot mutate the underlying Repository. Not being able to mutate the Repository means that the functions defined for RepositoryRef should be thread-safe.

The signature of a commit

Time in a signature

Enums

A structured way of referring to a git reference.

Determines whether to look for local or remote references or both.

A revision within the repository.

Type Definitions

A crate::vcs::Browser that uses Repository as the underlying repository backend, git2::Commit as the artifact, and Error for error reporting.

A History that uses git2::Commit as the underlying artifact.