Skip to content

Commit 96d0f4a

Browse files
committed
Reference proxy
1 parent 1792f51 commit 96d0f4a

File tree

3 files changed

+31
-13
lines changed

3 files changed

+31
-13
lines changed

src/GitVersionCore.Tests/Core/RepositoryExtensionsTests.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using Commit = GitVersion.Commit;
1212
using Branch = GitVersion.Branch;
1313
using BranchCollection = GitVersion.BranchCollection;
14+
using Reference = GitVersion.Reference;
1415
using ReferenceCollection = GitVersion.ReferenceCollection;
1516
using Remote = GitVersion.Remote;
1617

@@ -181,19 +182,15 @@ public override Reference UpdateTarget(Reference directRef, ObjectId targetId)
181182

182183
private class TestableReference : Reference
183184
{
184-
private readonly string canonicalName;
185185

186186
public TestableReference(string canonicalName)
187187
{
188-
this.canonicalName = canonicalName;
188+
this.CanonicalName = canonicalName;
189189
}
190190

191-
public override string CanonicalName => canonicalName;
191+
public override string CanonicalName { get; }
192192

193-
public override DirectReference ResolveToDirectReference()
194-
{
195-
throw new NotImplementedException();
196-
}
193+
public override DirectReference ResolveToDirectReference() => throw new NotImplementedException();
197194
}
198195
}
199196
}

src/GitVersionCore/Core/GitModel.cs

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,26 @@ protected Branch()
132132
public virtual bool IsTracking => innerBranch != null && innerBranch.IsTracking;
133133
}
134134

135+
public class Reference
136+
{
137+
private readonly LibGit2Sharp.Reference innerReference;
138+
139+
private Reference(LibGit2Sharp.Reference reference)
140+
{
141+
innerReference = reference;
142+
}
143+
144+
protected Reference()
145+
{
146+
}
147+
public virtual string CanonicalName => innerReference.CanonicalName;
148+
public string TargetIdentifier => innerReference.TargetIdentifier;
149+
150+
public virtual DirectReference ResolveToDirectReference() => innerReference.ResolveToDirectReference();
151+
public static implicit operator LibGit2Sharp.Reference(Reference d) => d?.innerReference;
152+
public static explicit operator Reference(LibGit2Sharp.Reference b) => b is null ? null : new Reference(b);
153+
}
154+
135155
public class Remote
136156
{
137157
private readonly LibGit2Sharp.Remote innerRemote;
@@ -220,12 +240,12 @@ protected ReferenceCollection()
220240
public IEnumerator<Reference> GetEnumerator()
221241
{
222242
foreach (var reference in innerCollection)
223-
yield return reference;
243+
yield return (Reference)reference;
224244
}
225245

226246
public virtual Reference Add(string name, string canonicalRefNameOrObjectish)
227247
{
228-
return innerCollection.Add(name, canonicalRefNameOrObjectish);
248+
return (Reference)innerCollection.Add(name, canonicalRefNameOrObjectish);
229249
}
230250

231251
public virtual DirectReference Add(string name, ObjectId targetId)
@@ -240,7 +260,7 @@ public virtual DirectReference Add(string name, ObjectId targetId, bool allowOve
240260

241261
public virtual Reference UpdateTarget(Reference directRef, ObjectId targetId)
242262
{
243-
return innerCollection.UpdateTarget(directRef, targetId);
263+
return (Reference)innerCollection.UpdateTarget(directRef, targetId);
244264
}
245265

246266
public virtual ReflogCollection Log(string canonicalName)
@@ -249,12 +269,13 @@ public virtual ReflogCollection Log(string canonicalName)
249269
}
250270

251271
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
252-
public virtual Reference this[string name] => innerCollection[name];
272+
public virtual Reference this[string name] => (Reference)innerCollection[name];
253273
public virtual Reference Head => this["HEAD"];
254274

255275
public virtual IEnumerable<Reference> FromGlob(string pattern)
256276
{
257-
return innerCollection.FromGlob(pattern);
277+
foreach (var reference in innerCollection.FromGlob(pattern))
278+
yield return (Reference)reference;
258279
}
259280
}
260281

src/GitVersionCore/Core/RepositoryMetadataProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ private IEnumerable<BranchCommit> GetMergeCommitsForBranch(Branch branch, Config
427427
{
428428
if (otherBranch.Tip == null)
429429
{
430-
log.Warning(String.Format(MissingTipFormat, otherBranch.FriendlyName));
430+
log.Warning(string.Format(MissingTipFormat, otherBranch.FriendlyName));
431431
return BranchCommit.Empty;
432432
}
433433

0 commit comments

Comments
 (0)