pub struct Repo(/* private fields */);Implementations§
Source§impl Repo
impl Repo
Sourcepub fn open(path: impl AsRef<Path>) -> Result<Self, GitError>
pub fn open(path: impl AsRef<Path>) -> Result<Self, GitError>
Attempt to open an already-existing repository at path.
The path can point to either a normal or bare repository.
Sourcepub fn discover(path: impl AsRef<Path>) -> Result<Self, GitError>
pub fn discover(path: impl AsRef<Path>) -> Result<Self, GitError>
Attempt to open an already-existing repository at or above path.
This starts at path and looks up the filesystem hierarchy
until it finds a repository.
Sourcepub fn commits(&self) -> Result<Commits<'_>, GitError>
pub fn commits(&self) -> Result<Commits<'_>, GitError>
Returns an iterator that produces all commits in the repo.
See .commits_ext() to be
able to specify the order.
Examples found in repository?
examples/example.rs (line 7)
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4 let path = std::env::args().nth(1).unwrap_or_else(|| String::from("."));
5 let repo = git_commits::open(&path)?;
6
7 for commit in repo.commits()? {
8 let commit = commit?;
9
10 let msg = commit.message_lossy();
11 let first_line = msg.trim().lines().next().unwrap_or_default();
12
13 let committer = commit.committer();
14 let author = commit.author();
15
16 println!();
17 println!("SHA: {}", commit.sha());
18 println!("Time: {}", committer.time_local().unwrap()); // same as `commit.time_local()`
19 println!("Author: {}", author.name_lossy());
20 println!("Message: {first_line}");
21 println!();
22
23 for change in commit.changes()? {
24 let change = change?;
25
26 // The following `match` can be simplified, by simply doing:
27 // println!(" {}", change);
28
29 match change {
30 Change::Added(change) => {
31 println!(
32 " {} {} ({} bytes)",
33 change.kind().letter(),
34 change.path().display(),
35 change.size(),
36 );
37 }
38 Change::Modified(change) => {
39 println!(
40 " {} {} ({} -> {} bytes)",
41 change.kind().letter(),
42 change.path().display(),
43 change.old_size(),
44 change.new_size(),
45 );
46 }
47 Change::Deleted(change) => {
48 println!(
49 " {} {} ({} bytes)",
50 change.kind().letter(),
51 change.path().display(),
52 change.size(),
53 );
54 }
55 Change::Renamed(change) => {
56 println!(
57 " {} {} -> {} ({} bytes)",
58 change.kind().letter(),
59 change.old_path().display(),
60 change.new_path().display(),
61 change.size(),
62 );
63 }
64 }
65 }
66 }
67
68 Ok(())
69}Auto Trait Implementations§
impl !Sync for Repo
impl Freeze for Repo
impl RefUnwindSafe for Repo
impl Send for Repo
impl Unpin for Repo
impl UnsafeUnpin for Repo
impl UnwindSafe for Repo
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more