Skip to content

Instantly share code, notes, and snippets.

@Aimeast
Last active October 12, 2023 00:43
Show Gist options
  • Save Aimeast/6250443 to your computer and use it in GitHub Desktop.
Save Aimeast/6250443 to your computer and use it in GitHub Desktop.
public static class CommitLogExtension
{
public static IEnumerable<Commit> PathFilter(this IEnumerable<Commit> log, string path)
{
if (string.IsNullOrEmpty(path))
return log;
return log.Where(s =>
{
var pathEntry = s[path];
var parent = s.Parents.FirstOrDefault();
if (parent == null)
return pathEntry != null;
var parentPathEntry = parent[path];
if (pathEntry == null && parentPathEntry == null)
return false;
else if (pathEntry != null && parentPathEntry != null)
return pathEntry.Target.Sha != parentPathEntry.Target.Sha;
else // pathEntry!=null ^ parentPathEntry!=null
return true;
});
}
}
var ancestors = _repository.Commits
.QueryBy(new Filter { Since = commit, SortBy = GitSortOptions.Topological | GitSortOptions.Time })
.PathFilter(path)
.ToList();
@Aimeast
Copy link
Author

Aimeast commented Aug 16, 2013

Maybe cant work with merged branch.

      ------
     /       \
 ---          --------
     \       /
      ------

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment