5 个版本

0.0.1-alpha72024年2月7日
0.0.1-alpha62024年2月6日
0.0.1-alpha42024年2月3日
0.0.1-alpha12024年2月2日

#218 in 机器学习

MIT 许可证

59KB
1.5K SLoC

gitstats (for Rust)

为 Git 仓库生成一些统计信息

crates.io

示例

获取每个作者的提交


use comfy_table::Table;
use gitstats::{CommitArgs, Repo, SortStatsBy};

fn contributors_stats() {
    let repo = Repo::new("/custom/repo");
    let commits = repo.list_commits(CommitArgs::default()).unwrap();
    let stats = repo.commits_stats(&commits).unwrap();
    let commits_per_author = stats.commits_per_author();
    let mut global_stats = commits_per_author.global_stats(SortStatsBy::LinesAdded);
    global_stats.sort_by(|a,b|b.commits_count.cmp(&a.commits_count));

    let mut table = Table::new();
    table.set_header(["Author", "Commits", "Lines"]);

    for global_stat in global_stats.iter() {
        let commits_count = global_stat.commits_count;
        let total_lines = global_stat.stats.lines_added;
        table.add_row([(&global_stat.author).name.to_string(), commits_count.to_string(), total_lines.to_string()]);
    }

    println!("{}", table);
}

将打印类似以下内容


 +---------------------+---------+--------+
 | Author              | Commits | Lines  |
 +========================================+
 | John Doe            | 54      | 13355  |
 |---------------------+---------+--------|
 | Jane Doe            | 48      | 1355   |
 |---------------------+---------+--------|
 | Alessandro Crugnola | 45      | 172240 |
 |---------------------+---------+--------|
 | Michael Binary      | 31      | 13845  |
 |---------------------+---------+--------|
 | David One           | 9       | 56     |
 +---------------------+---------+--------+

依赖项

~7–18MB
~244K SLoC