using System;
using System.Collections.Generic;
namespace LibGit2Sharp
{
///
/// A log of commits in a that can be filtered with queries.
///
public interface IQueryableCommitLog : ICommitLog
{
///
/// Returns the list of commits of the repository matching the specified .
///
/// The options used to control which commits will be returned.
/// A list of commits, ready to be enumerated.
ICommitLog QueryBy(CommitFilter filter);
///
/// Returns the list of commits of the repository representing the history of a file beyond renames.
///
/// The file's path.
/// A list of file history entries, ready to be enumerated.
IEnumerable QueryBy(string path);
///
/// Returns the list of commits of the repository representing the history of a file beyond renames.
///
/// The file's path.
/// The options used to control which commits will be returned.
/// A list of file history entries, ready to be enumerated.
IEnumerable QueryBy(string path, FollowFilter filter);
///
/// Find the best possible merge base given two s.
///
/// The first .
/// The second .
/// The merge base or null if none found.
[Obsolete("This method will be removed in the next release. Please use ObjectDatabase.FindMergeBase() instead.")]
Commit FindMergeBase(Commit first, Commit second);
///
/// Find the best possible merge base given two or more according to the .
///
/// The s for which to find the merge base.
/// The strategy to leverage in order to find the merge base.
/// The merge base or null if none found.
[Obsolete("This method will be removed in the next release. Please use ObjectDatabase.FindMergeBase() instead.")]
Commit FindMergeBase(IEnumerable commits, MergeBaseFindingStrategy strategy);
}
}