Example #1
0
        internal Commit CreateCommit(string message, Signature author, Signature committer, Tree tree, IEnumerable <Commit> parents, string referenceName)
        {
            Ensure.ArgumentNotNull(message, "message");
            Ensure.ArgumentNotNull(author, "author");
            Ensure.ArgumentNotNull(committer, "committer");
            Ensure.ArgumentNotNull(tree, "tree");
            Ensure.ArgumentNotNull(parents, "parents");

            IEnumerable <ObjectId> parentIds = parents.Select(p => p.Id);

            GitOid commitOid;

            using (var treePtr = new ObjectSafeWrapper(tree.Id, repo))
                using (var parentObjectPtrs = new DisposableEnumerable <ObjectSafeWrapper>(parentIds.Select(id => new ObjectSafeWrapper(id, repo))))
                    using (SignatureSafeHandle authorHandle = author.BuildHandle())
                        using (SignatureSafeHandle committerHandle = committer.BuildHandle())
                        {
                            string encoding = null; //TODO: Handle the encoding of the commit to be created

                            IntPtr[] parentsPtrs = parentObjectPtrs.Select(o => o.ObjectPtr.DangerousGetHandle()).ToArray();
                            int      res         = NativeMethods.git_commit_create(out commitOid, repo.Handle, referenceName, authorHandle,
                                                                                   committerHandle, encoding, message, treePtr.ObjectPtr, parentObjectPtrs.Count(), parentsPtrs);
                            Ensure.Success(res);
                        }

            return(repo.Lookup <Commit>(new ObjectId(commitOid)));
        }
        /// <summary>
        /// Enumerate over all records in the file. For each record store the bytes,
        /// the start position in the stream, length in bytes and the deserialized object.
        /// </summary>
        /// <remarks>Useful for debugging and analyzing binary logs</remarks>
        public IEnumerable <Record> ReadRecords(string logFilePath)
        {
            var stream = new FileStream(logFilePath, FileMode.Open, FileAccess.Read, FileShare.Read);

            return(DisposableEnumerable <Record> .Create(ReadRecords(stream), () => stream.Dispose()));
        }
Example #3
0
        internal Commit CreateCommit(string message, Signature author, Signature committer, Tree tree, IEnumerable<Commit> parents, string referenceName)
        {
            Ensure.ArgumentNotNull(message, "message");
            Ensure.ArgumentNotNull(author, "author");
            Ensure.ArgumentNotNull(committer, "committer");
            Ensure.ArgumentNotNull(tree, "tree");
            Ensure.ArgumentNotNull(parents, "parents");

            IEnumerable<ObjectId> parentIds = parents.Select(p => p.Id);

            GitOid commitOid;
            using (var treePtr = new ObjectSafeWrapper(tree.Id, repo))
            using (var parentObjectPtrs = new DisposableEnumerable<ObjectSafeWrapper>(parentIds.Select(id => new ObjectSafeWrapper(id, repo))))
            using (SignatureSafeHandle authorHandle = author.BuildHandle())
            using (SignatureSafeHandle committerHandle = committer.BuildHandle())
            {
                string encoding = null; //TODO: Handle the encoding of the commit to be created

                IntPtr[] parentsPtrs = parentObjectPtrs.Select(o => o.ObjectPtr.DangerousGetHandle()).ToArray();
                int res = NativeMethods.git_commit_create(out commitOid, repo.Handle, referenceName, authorHandle,
                                                      committerHandle, encoding, message, treePtr.ObjectPtr, parentObjectPtrs.Count(), parentsPtrs);
                Ensure.Success(res);
            }

            return repo.Lookup<Commit>(new ObjectId(commitOid));
        }