Skip to content

Commit 4adf783

Browse files
committed
CommitCollection proxy
1 parent 7829cc8 commit 4adf783

13 files changed

+71
-86
lines changed

src/GitVersion.sln.DotSettings

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -573,4 +573,5 @@ II.2.12 <HandlesEvent />
573573

574574

575575
<s:String x:Key="/Default/FilterSettingsManager/AttributeFilterXml/@EntryValue">&lt;data /&gt;</s:String>
576-
<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue">&lt;data&gt;&lt;IncludeFilters /&gt;&lt;ExcludeFilters /&gt;&lt;/data&gt;</s:String></wpf:ResourceDictionary>
576+
<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue">&lt;data&gt;&lt;IncludeFilters /&gt;&lt;ExcludeFilters /&gt;&lt;/data&gt;</s:String>
577+
<s:Boolean x:Key="/Default/UserDictionary/Words/=Reacheable/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

src/GitVersionCore.Tests/Extensions/GitToolsTestingExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ public static VersionVariables GetVersion(this RepositoryFixtureBase fixture, Co
6161

6262
try
6363
{
64-
var executeGitVersion = nextVersionCalculator.FindVersion();
65-
var variables = variableProvider.GetVariablesFor(executeGitVersion, context.Configuration, context.IsCurrentCommitTagged);
64+
var semanticVersion = nextVersionCalculator.FindVersion();
65+
var variables = variableProvider.GetVariablesFor(semanticVersion, context.Configuration, context.IsCurrentCommitTagged);
6666

6767
return variables;
6868
}

src/GitVersionCore.Tests/Mocks/MockBranch.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Collections;
22
using System.Collections.Generic;
33
using System.Linq;
4+
using GitVersion;
45
using LibGit2Sharp;
56
using Branch = GitVersion.Branch;
67

@@ -24,10 +25,10 @@ public MockBranch()
2425

2526
}
2627

27-
private readonly MockCommitLog commits = new MockCommitLog();
28+
private readonly MockCommitCollection commits = new MockCommitCollection();
2829
private readonly string friendlyName;
2930
public override string FriendlyName => friendlyName;
30-
public override ICommitLog Commits => commits;
31+
public override CommitCollection Commits => commits;
3132
public override Commit Tip => commits.First();
3233
public override bool IsTracking => true;
3334
public override bool IsRemote => false;

src/GitVersionCore.Tests/Mocks/MockCommitLog.cs renamed to src/GitVersionCore.Tests/Mocks/MockCommitCollection.cs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,22 @@
1-
using System.Collections;
21
using System.Collections.Generic;
32
using System.Linq;
3+
using GitVersion;
44
using LibGit2Sharp;
55

66
namespace GitVersionCore.Tests.Mocks
77
{
8-
public class MockCommitLog : ICommitLog
8+
public class MockCommitCollection : CommitCollection
99
{
1010
private List<Commit> Commits = new List<Commit>();
1111

12-
public IEnumerator<Commit> GetEnumerator()
12+
public override IEnumerator<Commit> GetEnumerator()
1313
{
1414
if (SortedBy == CommitSortStrategies.Reverse)
1515
return Commits.GetEnumerator();
1616

1717
return Enumerable.Reverse(Commits).GetEnumerator();
1818
}
1919

20-
IEnumerator IEnumerable.GetEnumerator()
21-
{
22-
return GetEnumerator();
23-
}
24-
2520
public CommitSortStrategies SortedBy { get; set; }
2621
public void Add(Commit item)
2722
{
@@ -33,7 +28,6 @@ public void Clear()
3328
Commits.Clear();
3429
}
3530

36-
3731
public bool Contains(Commit item)
3832
{
3933
return Commits.Contains(item);
@@ -52,5 +46,10 @@ public bool Remove(Commit item)
5246
public int Count => Commits.Count;
5347

5448
public bool IsReadOnly => false;
49+
50+
public override CommitCollection QueryBy(CommitFilter commitFilter)
51+
{
52+
return this;
53+
}
5554
}
5655
}

src/GitVersionCore.Tests/Mocks/MockQueryableCommitLog.cs

Lines changed: 0 additions & 44 deletions
This file was deleted.

src/GitVersionCore.Tests/Mocks/MockRepository.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace GitVersionCore.Tests.Mocks
1010
{
1111
public class MockRepository : IGitRepository
1212
{
13-
private IQueryableCommitLog commits;
13+
private CommitCollection commits;
1414

1515
public MockRepository()
1616
{
@@ -26,9 +26,9 @@ public void Dispose()
2626
public Branch Head { get; set; }
2727
public ReferenceCollection Refs { get; set; }
2828

29-
public IQueryableCommitLog Commits
29+
public CommitCollection Commits
3030
{
31-
get => commits ?? new MockQueryableCommitLog(Head.Commits);
31+
get => commits ?? Head.Commits;
3232
set => commits = value;
3333
}
3434

src/GitVersionCore/Core/Abstractions/IGitRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ public interface IGitRepository : IDisposable
77
{
88
IGitRepositoryCommands Commands { get; }
99
ObjectDatabase ObjectDatabase { get; }
10-
IQueryableCommitLog Commits { get; }
1110
Branch Head { get; }
11+
CommitCollection Commits { get; }
1212
BranchCollection Branches { get; }
1313
TagCollection Tags { get; }
1414
ReferenceCollection Refs { get; }

src/GitVersionCore/Core/Abstractions/IRepositoryMetadataProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public interface IRepositoryMetadataProvider
3939
IEnumerable<SemanticVersion> GetVersionTagsOnBranch(Branch branch, string tagPrefixRegex);
4040
IEnumerable<Tuple<Tag, SemanticVersion>> GetValidVersionTags(string tagPrefixRegex, DateTimeOffset? olderThan = null);
4141

42-
ICommitLog GetCommitLog(Commit baseVersionSource, Commit currentCommit);
42+
CommitCollection GetCommitLog(Commit baseVersionSource, Commit currentCommit);
4343
bool GetMatchingCommitBranch(Commit baseVersionSource, Branch branch, Commit firstMatchingCommit);
4444
string ShortenObjectId(GitObject commit);
4545
VersionField? DetermineIncrementedField(BaseVersion baseVersion, GitVersionContext context);

src/GitVersionCore/Core/GitModel.cs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ protected Branch()
2525
public virtual string FriendlyName => innerBranch.FriendlyName;
2626
public virtual Commit Tip => innerBranch.Tip;
2727
public virtual bool IsRemote => innerBranch.IsRemote;
28-
public virtual ICommitLog Commits => innerBranch.Commits;
28+
public virtual CommitCollection Commits => CommitCollection.FromCommitLog(innerBranch.Commits);
2929
public virtual bool IsTracking => innerBranch.IsTracking;
3030
}
3131

@@ -135,4 +135,32 @@ public virtual IEnumerable<Reference> FromGlob(string pattern)
135135
return innerReferenceCollection.FromGlob(pattern);
136136
}
137137
}
138+
139+
public class CommitCollection : IEnumerable<Commit>
140+
{
141+
private readonly ICommitLog innerCommitCollection;
142+
private CommitCollection(ICommitLog branchCollection) => innerCommitCollection = branchCollection;
143+
144+
protected CommitCollection()
145+
{
146+
}
147+
148+
public static ICommitLog ToCommitLog(CommitCollection d) => d.innerCommitCollection;
149+
150+
public static CommitCollection FromCommitLog(ICommitLog b) => b is null ? null : new CommitCollection(b);
151+
152+
public virtual IEnumerator<Commit> GetEnumerator()
153+
{
154+
foreach (var branch in innerCommitCollection)
155+
yield return branch;
156+
}
157+
158+
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
159+
160+
public virtual CommitCollection QueryBy(CommitFilter commitFilter)
161+
{
162+
var commitLog = ((IQueryableCommitLog) innerCommitCollection).QueryBy(commitFilter);
163+
return FromCommitLog(commitLog);
164+
}
165+
}
138166
}

src/GitVersionCore/Core/GitRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public void Dispose()
3838

3939
public ReferenceCollection Refs => (ReferenceCollection)repositoryInstance.Refs;
4040

41-
public IQueryableCommitLog Commits => repositoryInstance.Commits;
41+
public CommitCollection Commits => CommitCollection.FromCommitLog(repositoryInstance.Commits);
4242

4343
public BranchCollection Branches => (BranchCollection)repositoryInstance.Branches;
4444

0 commit comments

Comments
 (0)