Skip to content

mitsu-ksgr/git-blame-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Parses the git blame porcelain format into a struct.

Topics

Resources

License

Stars

Watchers

Forks

Languages