git-commits

Crates.iogit-commits
lib.rsgit-commits
version0.1.0
created_at2023-05-28 15:16:44.836217+00
updated_at2025-05-23 02:15:47.882745+00
descriptionSimple library for iterating git commits and changes
homepage
repositoryhttps://github.com/vallentin/git-commits
max_upload_size
id876566
size51,517
Christian Vallentin (vallentin)

documentation

https://docs.rs/git-commits

README

git-commits

Latest Version Docs License

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) => {}
        // }
    }
}
Commit count: 13

cargo fmt