Crate git_commits

Source
Expand description

Abstraction of git2 providing a simple interface for easily iterating over commits and changes in a Git repository.

In short, both git log --name-status and git log --stat --format=fuller can be implemented with just a handful of lines.

§Example

let repo = git_commits::open("path-to-repo")?;

for commit in repo.commits()? {
    // The `commit` contains the message, author, committer, time, etc
    let commit = commit?;
    println!("\n{}", commit);

    for change in commit.changes()? {
        // The `change` contains change kind, old/new path, old/new sizes, etc
        let change = change?;
        println!("  {}", change);

        // match change {
        //     Change::Added(change) => {}
        //     Change::Modified(change) => {}
        //     Change::Deleted(change) => {}
        //     Change::Renamed(change) => {}
        // }
    }
}

Structs§

Added
Changes
Commit
Commits
Deleted
GitError
A structure to represent errors coming out of libgit2.
Modified
Renamed
Repo
Signature
Sort
Orderings that may be specified for Revwalk iteration.

Enums§

Change
ChangeKind

Functions§

open