Behaviour definition for GitModule operations.
This allows for mocking git operations in tests using Mox.
Summary
Types
@type repo() :: Git.Repository.t()
Callbacks
@callback get_commit_dates(repo()) :: {:ok, [non_neg_integer()]}
@callback get_contributions_map(repo()) :: {:ok, [%{contributions: non_neg_integer(), name: String.t()}]}
@callback get_contributor_count(repo()) :: {:ok, non_neg_integer()}
@callback get_contributor_distribution(repo()) :: {:ok, map(), non_neg_integer()}
@callback get_contributors(repo()) :: {:ok, [Contributor.t()]}
@callback get_functional_contributors(repo()) :: {:ok, non_neg_integer(), [any()]}
@callback get_last_2_delta(repo()) :: {:ok, non_neg_integer(), non_neg_integer(), non_neg_integer()}
@callback get_last_n_commits(repo(), non_neg_integer()) :: {:ok, [any()]}
@callback get_total_commit_count(repo()) :: {:ok, non_neg_integer() | String.t()}
@callback get_total_lines(repo()) :: {:ok, non_neg_integer(), non_neg_integer()}