В Git, я могу получить все потребности совершает черезНайти все сливаются в Ancestry Путь
мерзавец журнала hash..master --ancestry-путь --merges
Есть ли эквивалент сделать это в LibGit2Sharp?
В Git, я могу получить все потребности совершает черезНайти все сливаются в Ancestry Путь
мерзавец журнала hash..master --ancestry-путь --merges
Есть ли эквивалент сделать это в LibGit2Sharp?
Первые некоторые основы:
журнал мерзавец topic..master
var filter = new CommitFilter {
SortBy = CommitSortStrategies.Time,
Since = master,
Until = topic,
};
var commitList = repo.Commits.QueryBy (filter);
журнал мерзавец topic..master --merges
var filter = new CommitFilter {
SortBy = CommitSortStrategies.Time,
Since = master,
Until = topic,
};
var commitList = repo.Commits.QueryBy (filter);
var mergeList = commitList.Where (p => p.Parents.Count() >= 2);
Теперь на ваш вопрос:
мерзавец журнала topic..master --ancestry-путь --merges
родословная траекторией =
When given a range of commits to display (e.g. commit1..commit2 or commit2 ^commit1), only display commits that exist directly on the ancestry chain between the commit1 and commit2, i.e. commits that are both descendants of commit1, and ancestors of commit2.
-merges
легко когда у нас есть путь родословной, поскольку мы можем фильтровать коммиты с более чем одним родителем. Получение пути родословная требует кодирования ;-)
С момента ICommitLog
, который возвращается из commitList
в первом примере выше содержит DAG (ориентированный ациклический граф) через .Parents
собственности, мы должны идти граф и получить «все простые пути»через глубину первого поиск, чтобы найти все не-циклические пути Если у вас есть список всех simple
путей просто фильтровать, с помощью которого фиксаций >=2
родителей
Примечания:.. Я делал это в несколько проектов на C# и даже простые, такие как вычисление запроса pull, связанного с конкретным фиксатором, используют эту предысторию с глубиной. Я стараюсь держаться подальше от Linq, чтобы сделать это, поскольку у меня есть huge
commit списки (100k + узлы между начальным и конечным узлами только в под-DAG, которые я ищу), а также избежать рекурсивных методов из-за размера стека, но ваш прецедент может/будет отличаться. Если вы застряли в этот момент, отправьте еще один вопрос с проблемой вашего алгоритма/кода.