Из локального репозитория я хочу получить все коммиты, которые либо создали, либо изменили определенный файл. До сих пор наше приложение обрабатывало это, помещая имя файла в сообщение фиксации, а затем просматривая сообщения фиксации с этим именем при создании истории. Я хотел бы иметь более чистое решение, которое не включает сообщения о фиксации, если это возможно.
Это то, что я пробовал до сих пор:
private List<Commit> GetAllCommitsForFile(string repositoryPath, string filename)
{
using (var repo = new Repository(repositoryPath))
{
List<LogEntry> logs = repo.Commits.QueryBy(Path.Combine(RepositoryPath, filename)).ToList();
List<Commit> commits = new List<Commit>();
foreach(LogEntry log in logs)
{
commits.Add(log.Commit);
}
return commits;
}
}
Описание QueryBy-методаговорит:
Возвращает список коммитов репозитория, представляющих историю файла после переименований.
Для меня это звучит как то, что я хочу. Тем не менее, когда я передаю только имя файла, я получаю KeyNotFoundException, и когда я объединяю его с путем к хранилищу, я получаю пустой список.