git-blame-parser

Crates.iogit-blame-parser
lib.rsgit-blame-parser
version0.1.1
created_at2025-04-22 17:40:13.659389+00
updated_at2025-04-22 18:01:42.378216+00
descriptionParses the git blame porcelain format into a struct.
homepage
repositoryhttps://github.com/mitsu-ksgr/git-blame-parser
max_upload_size
id1644403
size35,277
mitsu-ksgr (mitsu-ksgr)

documentation

README

git-blame-parser

Badge Workflow

Parses the output of git blame command in the porcelain format into a struct. the output must be generated using the --line-porcelain option.

Usage

Run the following Cargo command in your project directory:

% cargo add git-blame-parser

Or add the following line to your Cargo.toml:

[dependencies]
git-blame-parser = "0.1.1"

Then:

let output = std::process::Command::new("git")
    .args(["blame", "--line-porcelain"])
    .arg(filepath)
    .output()
    .unwrap();

if output.status.success() {
    let raw_blame = String::from_utf8_lossy(&output.stdout);
    let blames = match git_blame_parser::parse(&raw_blame) {
        Ok(blames) => blames,
        Err(e) => {
            eprintln!("Error: {e}");
            std::process::exit(1);
        }
    };

    for blame in blames.iter() {
        println!(
            "* {}: {:0>4} by {} {}",
            blame.short_commit(),
            blame.original_line_no,
            blame.author,
            blame.author_mail
        );
        println!("summary: {}", blame.summary);
        println!("content: `{}`", blame.content);
        println!();
    }
}

See also examples.

License

MIT

Commit count: 9

cargo fmt