获取方法的作者,比如代码

时间:2015-06-04 15:54:50

标签: git visual-studio codelens


我需要获得方法列表的作者。
我尝试通过使用LibGit2Sharp比较方法名称和补丁内容来做到这一点,但是它太长了,还有很多提交。
我想快点做,不知何故像代码镜头。
现在我试图通过自己的VS插件来获取它,可能有一些更简单的方法。
感谢。

2 个答案:

答案 0 :(得分:0)

查看git blame filename输出。似乎LibGit2Sharp supports这个。如果您知道方法开始和结束的行号,则可以针对特定方法运行它,例如通过运行git blame -L 1,10 filename,您将看到文件中最后一行更改为1-10的人。

答案 1 :(得分:0)

有一个按blame搜索的代码示例:

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);
            }
        }
    }
}
相关问题