Skip to content

Commit e715299

Browse files
author
Edward Thomson
committed
Merge pull request #1275 from libgit2/cmn/equality-over-id
Don't load an object just to check its ID
2 parents 4938414 + 840422d commit e715299

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

LibGit2Sharp/Branch.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,15 @@ public virtual BranchTrackingDetails TrackingDetails
106106
/// </value>
107107
public virtual bool IsCurrentRepositoryHead
108108
{
109-
get { return repo.Head == this; }
109+
get
110+
{
111+
if (this is DetachedHead)
112+
{
113+
return repo.Head.reference.TargetIdentifier == this.reference.TargetIdentifier;
114+
}
115+
116+
return repo.Head.reference.TargetIdentifier == this.CanonicalName;
117+
}
110118
}
111119

112120
/// <summary>

LibGit2Sharp/ReferenceWrapper.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ public abstract class ReferenceWrapper<TObject> : IEquatable<ReferenceWrapper<TO
1616
/// The repository.
1717
/// </summary>
1818
protected readonly Repository repo;
19+
protected readonly Reference reference;
1920
private readonly Lazy<TObject> objectBuilder;
2021

2122
private static readonly LambdaEqualityHelper<ReferenceWrapper<TObject>> equalityHelper =
22-
new LambdaEqualityHelper<ReferenceWrapper<TObject>>(x => x.CanonicalName, x => x.TargetObject);
23+
new LambdaEqualityHelper<ReferenceWrapper<TObject>>(x => x.CanonicalName, x => x.reference.TargetIdentifier);
2324

2425
private readonly string canonicalName;
2526

@@ -40,6 +41,7 @@ protected internal ReferenceWrapper(Repository repo, Reference reference, Func<R
4041

4142
this.repo = repo;
4243
canonicalName = canonicalNameSelector(reference);
44+
this.reference = reference;
4345
objectBuilder = new Lazy<TObject>(() => RetrieveTargetObject(reference));
4446
}
4547

0 commit comments

Comments
 (0)