Skip to content
This repository was archived by the owner on Feb 3, 2023. It is now read-only.

Commit ed68f7a

Browse files
committed
Switch on the type of git reference and set its target accordingly
1 parent dbea75e commit ed68f7a

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

LibGit2Sharp/ReferenceCollection.cs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,25 @@ public virtual Reference UpdateTarget(Reference symbolicRef, Reference targetRef
250250
}
251251

252252
using (ReferenceSafeHandle referencePtr = RetrieveReferencePtr(symbolicRef.CanonicalName))
253-
using (ReferenceSafeHandle handle = Proxy.git_reference_symbolic_set_target(referencePtr, targetRef.CanonicalName, signature, logMessage))
254253
{
255-
return Reference.BuildFromPtr<Reference>(handle, repo);
254+
GitReferenceType type = Proxy.git_reference_type(referencePtr);
255+
256+
DirectReference directRef = targetRef.ResolveToDirectReference();
257+
258+
if (type == GitReferenceType.Symbolic)
259+
{
260+
using (ReferenceSafeHandle handle = Proxy.git_reference_symbolic_set_target(referencePtr, directRef.TargetIdentifier, signature, logMessage))
261+
{
262+
return Reference.BuildFromPtr<Reference>(handle, repo);
263+
}
264+
}
265+
else
266+
{
267+
using (ReferenceSafeHandle handle = Proxy.git_reference_set_target(referencePtr, directRef.Target.Id, signature, logMessage))
268+
{
269+
return Reference.BuildFromPtr<Reference>(handle, repo);
270+
}
271+
}
256272
}
257273
}
258274

0 commit comments

Comments
 (0)