LibGit2Sharp 相当于 git diff --stat

sor*_*ell 3 libgit2 libgit2sharp

我正在寻找一种方法来捕获我的工作目录中每个文件中有多少行发生了变化 - 就像git diff --stat在 git 中一样 - 有没有办法用 LibGit2Sharp 做到这一点?

我知道我可以从补丁中获得总 LinesAdded/Deleted,但我想知道一个文件一个文件。

nul*_*ken 5

以下将枚举两次提交之间已更改的所有文件,以及更改次数(全局、行添加和行删除)。

var patch = repo.Diff.Compare<Patch>(fromCommit, untilCommit);

foreach (var pec in patch)
{
    Console.WriteLine("{0} = {1} ({2}+ and {3}-)",
        pec.Path,
        pec.LinesAdded + pec.LinesDeleted,
        pec.LinesAdded,
        pec.LinesDeleted);
}
Run Code Online (Sandbox Code Playgroud)

您是否需要访问 a 中的特定文件Patch,这些类型会公开一个索引器以简化该操作

PatchEntryChanges entryChanges = patch["path/to/my/file.txt"];
Run Code Online (Sandbox Code Playgroud)