2017-01-05 4 views
1

Мое требование - сравнить два тега и получить информацию о том, что изменилось. Для этого я использую приведенный ниже код. Код работает, и я могу получить, какие файлы были добавлены, удалены и изменены. Тем не менее, мне также необходимо получить автора, внесшего обновление в файл. Как получить автора? Объект 'TreeChanges' не имеет свойства author.Libgit2Sharp: Как получить информацию об авторе от Diff.Compare?

  Tag t1 = tags.Where(t => t.FriendlyName.Equals("10.0.0.01")).First(); 
      Tree commitTree1 = repo.Lookup<Commit>(t1.PeeledTarget.Id.Sha).Tree; 

      Tag t2 = tags.Where(t => t.FriendlyName.Equals("10.0.0.99")).Firs(); 
      Tree commitTree2 = repo.Lookup<Commit>(t2.PeeledTarget.Id.Sha).Tree; 

      var patch = repo.Diff.Compare<TreeChanges>(commitTree1, commitTree2); 

Спасибо!

ответ

1

Объект 'TreeChanges' не имеет свойства автора.

Это не потому, что «модифицированный» файл мог быть между двумя тегами, измененными одним автором, а затем удален, а затем снова добавлен другим автором, а затем изменен третьим.

Вам нужно будет перечислить все коммиты между этими двумя тегами, проверить, является ли файл частью этого коммита, и получить автора этой фиксации (commit.Author), чтобы найти всех авторов, коснувшихся указанного файла.
См:

+0

Спасибо за ответ. Однако, когда я пытаюсь создать объект CommitFilter, я получаю ошибку времени компиляции, которая говорит, что CommitFilter не содержит определения для «Так» и «До» –

+0

@TonyP Да, они были удалены https://github.com/ libgit2/libgit2sharp/pull/1069 и https://github.com/libgit2/libgit2sharp/commit/01b9a62c39ff99676158f9f2ab4d3a6d5632ccd7: используйте 'IncludeReachableFrom' и' ExcludeReachableFrom' с ligbit2sharp v0.22 или более. – VonC

+0

Спасибо! Получил его работу с IncludeReachableFrom & ExcludeReachableF –