Как получить список удаленных изменений из fetch с помощью LibGit2Sharp

Я могу успешно извлекать, извлекать, нажимать и т. д. с помощью LibGit2Sharp, но я хотел бы иметь возможность перечислять файлы, которые были изменены, добавлены и т. д. после выполнения выборки. Я использую https://github.com/libgit2/libgit2sharp/wiki/git-fetch, и ошибок или исключений не возникает, а logMessage — пустая строка.

Я хотел бы иметь возможность показать список изменений, как это делает Visual Studio, когда вы выполняете выборку.

Как я могу использовать LibGit2Sharp для этого?

Редактировать: я прочитал вики LibGit2Sharp и руководство автостопщика LibGit2Sharp по Git. Хотя я пробовал некоторые из доступных команд, чтобы просмотреть, какие результаты они предлагают, я не уверен, что для этого также подойдет эквивалентная команда git. Было бы полезно знать и понимать, какая команда предоставит эту информацию, и было бы признательно, если вы знакомы с Git, но не с LibGit2Sharp.


person Daniel    schedule 20.05.2017    source источник
comment
Я добавил к описанию, предполагая, что это причина понижения.   -  person Daniel    schedule 20.05.2017


Ответы (1)


После того, как выборка завершена, вы можете перечислить извлеченную фиксацию данной ветки с помощью

git log ..@{u}

с @{u}, обозначающим ветку, из которой происходит слияние (ветвь удаленного отслеживания вышестоящего уровня, обычно origin/yourbranch)

В LibGitSharp это то, что LibGit2Sharp/BranchUpdater.c Ссылка UpstreamBranch (восходящая ветвь)

При этом вы сможете перечислить коммиты между вашей текущей веткой HEAD и "UpstreamBranch", как в выпуск 1161, но в этом выпуске перечислялось то, что было отправлено: давайте инвертируем здесь параметры журнала.

var trackingBranch = repo.Head.TrackedBranch;
var log = repo.Commits.QueryBy(new CommitFilter 
            { IncludeReachableFrom = trackingBranch.Tip.Id, ExcludeReachableFrom = repo.Head.Tip.Id });

var count = log.Count();//Counts the number of log entries

//iterate the commits that represent the difference between your last 
//push to the remote branch and latest commits
foreach (var commit in log)
{
    Console.WriteLine(commit.Message);
}
person VonC    schedule 20.05.2017
comment
Благодарю вас! Это работало с IncludeReachableFrom и ExcludeReachableFrom в CommitFilter. - person Daniel; 20.05.2017