| Crates.io | git-blame-parser |
| lib.rs | git-blame-parser |
| version | 0.1.1 |
| created_at | 2025-04-22 17:40:13.659389+00 |
| updated_at | 2025-04-22 18:01:42.378216+00 |
| description | Parses the git blame porcelain format into a struct. |
| homepage | |
| repository | https://github.com/mitsu-ksgr/git-blame-parser |
| max_upload_size | |
| id | 1644403 |
| size | 35,277 |
Parses the output of git blame command in
the porcelain format
into a struct.
the output must be generated using the --line-porcelain option.
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.