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())); }
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)); }