internal GitObject Lookup(string shaOrReferenceName, GitObjectType type, LookUpOptions lookUpOptions) { ObjectId id; Reference reference = Refs[shaOrReferenceName]; if (reference != null) { id = reference.PeelToTargetObjectId(); } else { ObjectId.TryParse(shaOrReferenceName, out id); } if (id == null) { if (lookUpOptions.Has(LookUpOptions.ThrowWhenNoGitObjectHasBeenFound)) { Ensure.GitObjectIsNotNull(null, shaOrReferenceName); } return(null); } GitObject gitObj = Lookup(id, type); if (lookUpOptions.Has(LookUpOptions.ThrowWhenNoGitObjectHasBeenFound)) { Ensure.GitObjectIsNotNull(gitObj, shaOrReferenceName); } if (!lookUpOptions.Has(LookUpOptions.DereferenceResultToCommit)) { return(gitObj); } return(gitObj.DereferenceToCommit(shaOrReferenceName, lookUpOptions.Has(LookUpOptions.ThrowWhenCanNotBeDereferencedToACommit))); }
internal GitObject Lookup(string objectish, GitObjectType type, LookUpOptions lookUpOptions) { Ensure.ArgumentNotNullOrEmptyString(objectish, "commitOrBranchSpec"); GitObject obj; using (GitObjectSafeHandle sh = Proxy.git_revparse_single(handle, objectish)) { if (sh == null) { if (lookUpOptions.HasFlag(LookUpOptions.ThrowWhenNoGitObjectHasBeenFound)) { Ensure.GitObjectIsNotNull(null, objectish); } return(null); } GitObjectType objType = Proxy.git_object_type(sh); if (type != GitObjectType.Any && objType != type) { return(null); } obj = GitObject.BuildFrom(this, Proxy.git_object_id(sh), objType, PathFromRevparseSpec(objectish)); } if (lookUpOptions.HasFlag(LookUpOptions.DereferenceResultToCommit)) { return(obj.DereferenceToCommit( lookUpOptions.HasFlag(LookUpOptions.ThrowWhenCanNotBeDereferencedToACommit))); } return(obj); }
internal GitObject Lookup(string shaOrReferenceName, GitObjectType type, LookUpOptions lookUpOptions) { ObjectId id; Reference reference = Refs[shaOrReferenceName]; if (reference != null) { id = reference.PeelToTargetObjectId(); } else { ObjectId.TryParse(shaOrReferenceName, out id); } if (id == null) { if (lookUpOptions.Has(LookUpOptions.ThrowWhenNoGitObjectHasBeenFound)) { Ensure.GitObjectIsNotNull(null, shaOrReferenceName); } return null; } GitObject gitObj = Lookup(id, type); if (lookUpOptions.Has(LookUpOptions.ThrowWhenNoGitObjectHasBeenFound)) { Ensure.GitObjectIsNotNull(gitObj, shaOrReferenceName); } if (!lookUpOptions.Has(LookUpOptions.DereferenceResultToCommit)) { return gitObj; } return gitObj.DereferenceToCommit(shaOrReferenceName, lookUpOptions.Has(LookUpOptions.ThrowWhenCanNotBeDereferencedToACommit)); }