LibGit2Sharp.Commit.BuildFromPtr C# (CSharp) Method

BuildFromPtr() static private method

static private BuildFromPtr ( IntPtr obj, ObjectId id, Repository repo ) : Commit
obj IntPtr
id ObjectId
repo Repository
return Commit
        internal static Commit BuildFromPtr(IntPtr obj, ObjectId id, Repository repo)
        {
            var treeId =
                new ObjectId((GitOid)Marshal.PtrToStructure(NativeMethods.git_commit_tree_oid(obj), typeof(GitOid)));

            return new Commit(id, treeId, repo)
                       {
                           Message = NativeMethods.git_commit_message(obj).MarshallAsString(), //TODO: Turn into string.Empty if null
                           Encoding = RetrieveEncodingOf(obj),
                           Author = new Signature(NativeMethods.git_commit_author(obj)),
                           Committer = new Signature(NativeMethods.git_commit_committer(obj)),
                       };
        }

Usage Example

Esempio n. 1
0
        internal static GitObject CreateFromPtr(IntPtr obj, ObjectId id, Repository repo)
        {
            try
            {
                GitObjectType type = NativeMethods.git_object_type(obj);
                switch (type)
                {
                case GitObjectType.Commit:
                    return(Commit.BuildFromPtr(obj, id, repo));

                case GitObjectType.Tree:
                    return(Tree.BuildFromPtr(obj, id, repo));

                case GitObjectType.Tag:
                    return(TagAnnotation.BuildFromPtr(obj, id, repo));

                case GitObjectType.Blob:
                    return(Blob.BuildFromPtr(obj, id, repo));

                default:
                    throw new LibGit2Exception(string.Format(CultureInfo.InvariantCulture, "Unexpected type '{0}' for object '{1}'.", type, id));
                }
            }
            finally
            {
                NativeMethods.git_object_close(obj);
            }
        }