added branch filter functionality, modified get commit functionality

This commit is contained in:
Wyatt J. Miller 2022-08-04 15:53:49 -04:00
parent d69bc83dc9
commit cf54ae1848

View File

@ -4,6 +4,7 @@ public class CommitDetail
{ {
private List<string>? _authors; private List<string>? _authors;
private SortedList<string, int>? _commitDetails; private SortedList<string, int>? _commitDetails;
private string _currentBranch;
public List<string>? Authors public List<string>? Authors
{ {
@ -17,13 +18,20 @@ public class CommitDetail
set { _commitDetails = value; } set { _commitDetails = value; }
} }
public string CurrentBranch
{
get { return _currentBranch; }
set { _currentBranch = value; }
}
public CommitDetail() public CommitDetail()
{ {
_authors = new List<string>(); _authors = new List<string>();
_commitDetails = new SortedList<string, int>(); _commitDetails = new SortedList<string, int>();
_currentBranch = GetCurrentBranch();
} }
public void GetAllCommitsByName() public void GetCurrentCommitsByName()
{ {
using (var repo = new Repository(Directory.GetCurrentDirectory())) using (var repo = new Repository(Directory.GetCurrentDirectory()))
{ {
@ -43,7 +51,7 @@ public class CommitDetail
} }
} }
public void GetAllCommitsByEmail() public void GetCurrentCommitsByEmail()
{ {
using (var repo = new Repository(Directory.GetCurrentDirectory())) using (var repo = new Repository(Directory.GetCurrentDirectory()))
{ {
@ -70,4 +78,50 @@ public class CommitDetail
return repo.Commits.Count(); return repo.Commits.Count();
} }
} }
public string GetCurrentBranch()
{
using (var repo = new Repository(Directory.GetCurrentDirectory()))
{
return repo.Head.Reference.TargetIdentifier;
}
}
public void GetCommitsByBranch(string branchName)
{
using (var repo = new Repository(Directory.GetCurrentDirectory()))
{
var branchResult = repo.Branches[branchName];
if (branchResult == null)
{
branchResult = repo.Branches[$"origin/{branchName}"];
var remoteBranch = repo.CreateBranch(branchName, branchResult.Tip);
repo.Branches.Update(remoteBranch, b => b.UpstreamBranch = $"refs/heads/{branchName}");
}
foreach (var c in branchResult.Commits)
{
if (!_authors.Contains(c.Author.Name))
{
_authors.Add(c.Author.Name);
}
}
foreach (var a in _authors)
{
int commitCount = branchResult.Commits.Where(r => r.Author.Name == a).Count();
_commitDetails.Add(a, commitCount);
}
}
}
public void GetCommitsByTag(string tagName)
{
using (var repo = new Repository(Directory.GetCurrentDirectory()))
{
var tagResult = repo.Tags[tagName];
System.Console.WriteLine(tagResult);
}
}
} }