我需要获取方法列表的作者。
我试图通过使用 LibGit2Sharp 将方法名称与补丁内容进行比较来做到这一点,但它太长了,有很多提交。
我想快速完成,有点像代码镜头。
现在我正在尝试通过自己的 VS 插件来获取它,可能有一些更简单的方法。
谢谢。
问问题
283 次
2 回答
0
看看git blame filename
输出。似乎 LibGit2Sharp支持这一点。如果您知道方法开始和结束的行号,则可以针对特定方法运行它,例如通过运行git blame -L 1,10 filename
您将看到谁是文件中最后更改的第 1-10 行。
于 2015-06-04T16:08:14.927 回答
0
有一个按责备搜索的代码示例:
var blames = repo.Blame(parameters.FilePath.Replace(_repository, ""));
var commitDate = DateTime.Now;
foreach (var blame in blames)
{
if (blame.InitialCommit.Sha != (blame.InitialCommit.Parents.FirstOrDefault() == null ? blame.InitialCommit.Sha : blame.InitialCommit.Parents.First().Sha) &&
(!blame.InitialCommit.Message.ToLower().Contains("merge")))
{
Tree commitTree1 = repo.Lookup<LibGit2Sharp.Commit>(blame.InitialCommit.Sha).Tree;
Tree commitTree2 = repo.Lookup<LibGit2Sharp.Commit>(blame.InitialCommit.Parents.FirstOrDefault() == null ? blame.InitialCommit.Sha : blame.InitialCommit.Parents.First().Sha).Tree;
string content = repo.Diff.Compare<Patch>(commitTree1, commitTree2).Content;
if (content.Contains(parameters.TestName))
{
if (commitDate.CompareTo(blame.InitialSignature.When.Date) > 0)
{
commitDate = blame.InitialSignature.When.Date;
author = string.Format("Email: {0}; Name: {1}", blame.InitialCommit.Author.Email, blame.InitialCommit.Author.Name);
}
}
}
}
于 2015-06-05T16:04:55.060 回答