private ObjectSafeWrapper RetrieveHeadCommitPtr(Reference head)
        {
            DirectReference oidRef = head.ResolveToDirectReference();

            if (oidRef == null)
            {
                return(new ObjectSafeWrapper(null, repo));
            }

            return(new ObjectSafeWrapper(new ObjectId(oidRef.TargetIdentifier), repo));
        }
示例#2
0
        /// <summary>
        ///   Try to lookup an object by its sha or a reference canonical name and <see cref = "GitObjectType" />. If no matching object is found, null will be returned.
        /// </summary>
        /// <param name = "shaOrReferenceName">The sha or reference canonical name to lookup.</param>
        /// <param name = "type">The kind of <see cref = "GitObject" /> being looked up</param>
        /// <returns>The <see cref = "GitObject" /> or null if it was not found.</returns>
        public GitObject Lookup(string shaOrReferenceName, GitObjectType type = GitObjectType.Any)
        {
            ObjectId id;

            if (ObjectId.TryParse(shaOrReferenceName, out id))
            {
                return(Lookup(id, type));
            }

            Reference reference = Refs[shaOrReferenceName];

            if (!IsReferencePeelable(reference))
            {
                return(null);
            }

            return(Lookup(reference.ResolveToDirectReference().TargetIdentifier, type));
        }
        private TObject RetrieveTargetObject(Reference reference)
        {
            var directReference = reference.ResolveToDirectReference();

            if (directReference == null)
            {
                return(null);
            }

            var target = directReference.Target;

            if (target == null)
            {
                return(null);
            }

            return(repo.Lookup <TObject>(target.Id));
        }
示例#4
0
        private TObject RetrieveTargetObject(Reference reference)
        {
            Ensure.ArgumentNotNull(reference, "reference");

            var directReference = reference.ResolveToDirectReference();

            if (directReference == null)
            {
                return(null);
            }

            var target = directReference.Target;

            if (target == null)
            {
                return(null);
            }

            return(repo.Lookup <TObject>(target.Id));
        }
示例#5
0
 /// <summary>
 ///   Recursively peels the target of the reference until a direct reference is encountered.
 /// </summary>
 /// <returns>The <see cref = "DirectReference" /> this <see cref = "SymbolicReference" /> points to.</returns>
 public override DirectReference ResolveToDirectReference()
 {
     return((Target == null) ? null : Target.ResolveToDirectReference());
 }