无法从 libgit2sharp 中的提交中获取添加的文件名

Unable to get added file names from the commit in libgit2sharp

我想出了以下代码来识别最近一次提交和上一次提交之间更改的文件。此逻辑显示已更改文件的名称。但是它不记录 "Added" 文件的名称。我正在使用 GitLab 回购来测试这个。请指教如何解决这个问题。

    static void Main(string[] args)
    {            
        using (var repo = new Repository(@"C:\xxxx\source\repos\SampleApp"))
        {
            //Get the brach
            var branch = repo.Branches.Where(b => !b.IsRemote && b.IsCurrentRepositoryHead).FirstOrDefault();

            //Get the latest commit
            var latestCommit = branch.Commits.ElementAt(0);
            Console.WriteLine(string.Format("Latest Commit: {0}-{1}", latestCommit.MessageShort, latestCommit.Committer.When));

            //Get the previous comit
            var previousCommit = branch.Commits.ElementAt(1);
            Console.WriteLine(string.Format("Previous Commit: {0}-{1}", previousCommit.MessageShort, previousCommit.Committer.When));

            //Get the change set
            var changeSet = repo.Diff.Compare<TreeChanges>(latestCommit.Tree, previousCommit.Tree);

            var modifiedFiles = changeSet.Modified;                
            var addedFiles = changeSet.Added;

            //Print names of modified files
            foreach (var m in modifiedFiles)
            {
                Console.WriteLine("Modified: " + m.Path);
            }

            //Print names of added files
            foreach (var m in addedFiles)
            {
                Console.WriteLine("Added: " + m.Path);
            }
            Console.Read();     
        }
    }
}

提前致谢。

更新: 问题在于获取更改集的下一行。我以其他方式使用旧树和新树参数。我换了那些,现在可以正常使用了。

//Get the change set
var changeSet = repo.Diff.Compare<TreeChanges>(previousCommit.Tree, latestCommit.Tree);

下面是功能齐全的代码。

static void Main(string[] args)
        {            
            using (var repo = new Repository(@"C:\xxxx\source\repos\SampleApp"))
            {
                //Get the brach
                var branch = repo.Branches.Where(b => !b.IsRemote && b.IsCurrentRepositoryHead).FirstOrDefault();

                //Get the latest commit
                var latestCommit = branch.Commits.ElementAt(0);
                Console.WriteLine(string.Format("Latest Commit: {0}-{1}", latestCommit.MessageShort, latestCommit.Committer.When));

                //Get the previous comit
                var previousCommit = branch.Commits.ElementAt(1);
                Console.WriteLine(string.Format("Previous Commit: {0}-{1}", previousCommit.MessageShort, previousCommit.Committer.When));

                //Get the change set
                var changeSet = repo.Diff.Compare<TreeChanges>(previousCommit.Tree, latestCommit.Tree);

                var modifiedFiles = changeSet.Modified;                
                var addedFiles = changeSet.Added;

                //Print names of modified files
                foreach (var m in modifiedFiles)
                {
                    Console.WriteLine("Modified: " + m.Path);
                }

                //Print names of added files
                foreach (var m in addedFiles)
                {
                    Console.WriteLine("Added: " + m.Path);
                }
                Console.Read();     
            }
        }