2017-01-11 10 views
0

Как я могу получить файлы, которые были частью самого первого (начального) коммита репозитория?Libgit2Sharp: получить файлы, связанные с первоначальным (первым) фиксацией

В настоящее время я использую следующее, чтобы узнать файлы, которые являются частью фиксации (и это работает). Однако, поскольку для этого метода нужны два параметра, что мне нужно передать, чтобы получить файлы, которые являются частью коммита? Или есть другой метод, который мне нужно использовать?

repo.Diff.Compare<TreeChanges>(repo.Commits.ElementAt(i).Tree, repo.Commits.ElementAt(i + 1).Tree) 

Спасибо!

ответ

0

я смог достичь своей потребности, используя следующие:

    //The tree object corresponding to the first commit in the repo 
        Tree firstCommit = repo.Lookup<Tree>(repo.Commits.ElementAt(i).Tree.Sha); 
        //The tree object corresponding to the last commit in the repo 
        Tree lastCommit = repo.Lookup<Tree>(repo.Commits.ElementAt(0).Tree.Sha); 


        var changes = repo.Diff.Compare<TreeChanges>(lastCommit, firstCommit); 
        foreach (var item in changes) 
        { 
         if (item.Status != ChangeKind.Deleted) 
         { 
          //...This object (i.e. item) corresponds to a file that was part of the first (initial) commit... 
         } 
        } 

Позвольте мне знать, если есть лучший способ ...

0

Вы можете легко взять диф между начальным деревом и null для поиска файлов:

foreach (TreeEntryChanges change in repo.Diff.Compare<TreeChanges>(null, commit.Tree)) 
{ 
    Console.WriteLine("\t{0} :\t{1}", change.Status, change.Path); 
}