pub struct Repository { /* private fields */ }Expand description
Represents the state associated with a Git repository.
Many other types in this crate are derived from methods in this struct.
Implementations§
Source§impl Repository
impl Repository
Sourcepub fn discover(repo_uri: impl AsRef<Path>) -> Result<Self, Error>
pub fn discover(repo_uri: impl AsRef<Path>) -> Result<Self, Error>
Attempt to open a git repository at or above repo_uri in the file
system.
Examples found in repository?
16fn main() {
17 let repo_path = match env::args().nth(1) {
18 Some(path) => path,
19 None => {
20 print_usage();
21 return;
22 }
23 };
24 let repo = Repository::discover(repo_path).unwrap();
25 let now = Instant::now();
26 let head = repo.head().unwrap();
27 let root = repo.root_dir(head).unwrap();
28 print_directory(&root, &repo, 0);
29
30 let elapsed_millis = now.elapsed().as_millis();
31 println!("browse with print: {elapsed_millis} ms");
32}Sourcepub fn which_namespace(&self) -> Result<Option<Namespace>, Error>
pub fn which_namespace(&self) -> Result<Option<Namespace>, Error>
What is the current namespace we’re browsing in.
Sourcepub fn switch_namespace(&self, namespace: &RefString) -> Result<(), Error>
pub fn switch_namespace(&self, namespace: &RefString) -> Result<(), Error>
Switch to a namespace
pub fn with_namespace<T, F>( &self, namespace: &RefString, f: F, ) -> Result<T, Error>
Sourcepub fn branches<'a, G>(&'a self, pattern: G) -> Result<Branches<'a>, Error>
pub fn branches<'a, G>(&'a self, pattern: G) -> Result<Branches<'a>, Error>
Returns an iterator of branches that match pattern.
Sourcepub fn branch_names<'a, G>(
&'a self,
filter: G,
) -> Result<BranchNames<'a>, Error>
pub fn branch_names<'a, G>( &'a self, filter: G, ) -> Result<BranchNames<'a>, Error>
Lists branch names with filter.
Returns an iterator of tags that match pattern.
Sourcepub fn tag_names<'a>(
&'a self,
filter: &Glob<Tag>,
) -> Result<TagNames<'a>, Error>
pub fn tag_names<'a>( &'a self, filter: &Glob<Tag>, ) -> Result<TagNames<'a>, Error>
Lists tag names in the local RefScope.
pub fn categories<'a>( &'a self, pattern: &Glob<Qualified<'_>>, ) -> Result<Categories<'a>, Error>
Sourcepub fn namespaces(&self, pattern: &Glob<Namespace>) -> Result<Namespaces, Error>
pub fn namespaces(&self, pattern: &Glob<Namespace>) -> Result<Namespaces, Error>
Returns an iterator of namespaces that match pattern.
Sourcepub fn diff(
&self,
from: impl Revision,
to: impl Revision,
) -> Result<Diff, Error>
pub fn diff( &self, from: impl Revision, to: impl Revision, ) -> Result<Diff, Error>
Get the Diff between two commits.
Examples found in repository?
8fn main() {
9 let options = get_options_or_exit();
10 let repo = init_repository_or_exit(&options.path_to_repo);
11 let head_oid = match options.head_revision {
12 HeadRevision::Head => repo.head().unwrap(),
13 HeadRevision::Commit(id) => Oid::from_str(&id).unwrap(),
14 };
15 let base_oid = Oid::from_str(&options.base_revision).unwrap();
16 let now = Instant::now();
17 let elapsed_nanos = now.elapsed().as_nanos();
18 let diff = repo.diff(base_oid, head_oid).unwrap();
19 print_diff_summary(&diff, elapsed_nanos);
20}Sourcepub fn diff_commit(&self, commit: impl ToCommit) -> Result<Diff, Error>
pub fn diff_commit(&self, commit: impl ToCommit) -> Result<Diff, Error>
Get the Diff of a commit.
If the commit has a parent, then it the diff will be a
comparison between itself and that parent. Otherwise, the left
hand side of the diff will pass nothing.
Sourcepub fn diff_file<P: AsRef<Path>, R: Revision>(
&self,
path: &P,
from: R,
to: R,
) -> Result<FileDiff, Error>
pub fn diff_file<P: AsRef<Path>, R: Revision>( &self, path: &P, from: R, to: R, ) -> Result<FileDiff, Error>
Sourcepub fn root_dir<C: ToCommit>(&self, commit: C) -> Result<Directory, Error>
pub fn root_dir<C: ToCommit>(&self, commit: C) -> Result<Directory, Error>
Returns a top level Directory without nested sub-directories.
To visit inside any nested sub-directories, call directory.get(&repo)
on the sub-directory.
Examples found in repository?
16fn main() {
17 let repo_path = match env::args().nth(1) {
18 Some(path) => path,
19 None => {
20 print_usage();
21 return;
22 }
23 };
24 let repo = Repository::discover(repo_path).unwrap();
25 let now = Instant::now();
26 let head = repo.head().unwrap();
27 let root = repo.root_dir(head).unwrap();
28 print_directory(&root, &repo, 0);
29
30 let elapsed_millis = now.elapsed().as_millis();
31 println!("browse with print: {elapsed_millis} ms");
32}Sourcepub fn directory<C: ToCommit, P: AsRef<Path>>(
&self,
commit: C,
path: &P,
) -> Result<Directory, Error>
pub fn directory<C: ToCommit, P: AsRef<Path>>( &self, commit: C, path: &P, ) -> Result<Directory, Error>
Returns a Directory for path in commit.
Sourcepub fn file<C: ToCommit, P: AsRef<Path>>(
&self,
commit: C,
path: &P,
) -> Result<File, Error>
pub fn file<C: ToCommit, P: AsRef<Path>>( &self, commit: C, path: &P, ) -> Result<File, Error>
Returns a File for path in commit.
Sourcepub fn tree<C: ToCommit, P: AsRef<Path>>(
&self,
commit: C,
path: &P,
) -> Result<Tree, Error>
pub fn tree<C: ToCommit, P: AsRef<Path>>( &self, commit: C, path: &P, ) -> Result<Tree, Error>
Returns a Tree for path in commit.
Sourcepub fn blob<'a, C: ToCommit, P: AsRef<Path>>(
&'a self,
commit: C,
path: &P,
) -> Result<Blob<BlobRef<'a>>, Error>
pub fn blob<'a, C: ToCommit, P: AsRef<Path>>( &'a self, commit: C, path: &P, ) -> Result<Blob<BlobRef<'a>>, Error>
Returns a Blob for path in commit.
pub fn blob_ref(&self, oid: Oid) -> Result<BlobRef<'_>, Error>
Sourcepub fn last_commit<P, C>(
&self,
path: &P,
rev: C,
) -> Result<Option<Commit>, Error>
pub fn last_commit<P, C>( &self, path: &P, rev: C, ) -> Result<Option<Commit>, Error>
Returns the last commit, if exists, for a path in the history of
rev.
Sourcepub fn commit<R: Revision>(&self, rev: R) -> Result<Commit, Error>
pub fn commit<R: Revision>(&self, rev: R) -> Result<Commit, Error>
Returns a commit for rev, if it exists.
Sourcepub fn stats(&self) -> Result<Stats, Error>
pub fn stats(&self) -> Result<Stats, Error>
Gets the Stats of this repository starting from the
HEAD (see Repository::head) of the repository.
Sourcepub fn stats_from<R>(&self, rev: &R) -> Result<Stats, Error>where
R: Revision,
pub fn stats_from<R>(&self, rev: &R) -> Result<Stats, Error>where
R: Revision,
Gets the Stats of this repository starting from the given
rev.
Sourcepub fn get_commit_file<'a, P, R>(
&'a self,
rev: &R,
path: &P,
) -> Result<FileContent<'a>, Error>
pub fn get_commit_file<'a, P, R>( &'a self, rev: &R, path: &P, ) -> Result<FileContent<'a>, Error>
Retrieves the file with path in this commit.
Sourcepub fn head(&self) -> Result<Oid, Error>
pub fn head(&self) -> Result<Oid, Error>
Returns the Oid of the current HEAD.
Examples found in repository?
16fn main() {
17 let repo_path = match env::args().nth(1) {
18 Some(path) => path,
19 None => {
20 print_usage();
21 return;
22 }
23 };
24 let repo = Repository::discover(repo_path).unwrap();
25 let now = Instant::now();
26 let head = repo.head().unwrap();
27 let root = repo.root_dir(head).unwrap();
28 print_directory(&root, &repo, 0);
29
30 let elapsed_millis = now.elapsed().as_millis();
31 println!("browse with print: {elapsed_millis} ms");
32}More examples
8fn main() {
9 let options = get_options_or_exit();
10 let repo = init_repository_or_exit(&options.path_to_repo);
11 let head_oid = match options.head_revision {
12 HeadRevision::Head => repo.head().unwrap(),
13 HeadRevision::Commit(id) => Oid::from_str(&id).unwrap(),
14 };
15 let base_oid = Oid::from_str(&options.base_revision).unwrap();
16 let now = Instant::now();
17 let elapsed_nanos = now.elapsed().as_nanos();
18 let diff = repo.diff(base_oid, head_oid).unwrap();
19 print_diff_summary(&diff, elapsed_nanos);
20}Sourcepub fn extract_signature(
&self,
commit: impl ToCommit,
field: Option<&str>,
) -> Result<Option<Signature>, Error>
pub fn extract_signature( &self, commit: impl ToCommit, field: Option<&str>, ) -> Result<Option<Signature>, Error>
Extract the signature from a commit
§Arguments
field - the name of the header field containing the signature block;
pass None to extract the default ‘gpgsig’