【发布时间】:2016-07-18 12:51:25
【问题描述】:
我需要使用 C# 以编程方式获取 Git 历史记录中特定行的最后一位作者。 我尝试使用libgit2sharp:
var repo = new LibGit2Sharp.Repository(gitRepositoryPath);
string relativePath = MakeRelativeSimple(filename);
var blameHunks = repo.Blame(relativePath);
// next : find the hunk which overlap the desired line number
但这相当于命令
git blame <file>
事实上我需要
git blame -w <file>(比较时忽略空格)
Libgit2sharp 不要设置-w 开关,也不要提供任何参数/选项来设置它。
我有什么选择?你知道任何其他兼容blame 命令的-w 开关的库吗?
【问题讨论】:
-
只是为了澄清你已经尝试过NGit?
-
@Jeremy:一点也不,我不知道NGit。我在这个问题上花了很多时间,所以我更愿意征求反馈意见。
-
酷,这对 LibGit2Sharp 开发团队来说是一个非常好的功能请求 :) 如果您礼貌地要求他们引用此 Q 的链接,您可能会鼓励核心团队或贡献者之一添加它虽然这个 Q 有一个活跃的赏金附加......否则 Evk 应该得到它(+1)。手指交叉这足以说服,因为那样你就不需要依赖 2 个库。
-
@Jeremy :功能请求已经是 here(自 2015 年 8 月起)。
-
lib2gitSharp 的问题在于它使用 lib2git,它是“Git 核心方法的可移植、纯 C 实现,作为具有可靠 API 的可重入可链接库提供,允许您编写支持 C 绑定的任何语言的本机速度自定义 Git 应用程序。”它没有空格选项。它不执行git,所以你可以加-w,它实现了一切。我试图自己实现它,但 C 代码让我头晕目眩。可能您将不得不使用 NGIT。
标签: c# git libgit2 libgit2sharp git-blame