public static ObjectId CreateCommit (NGit.Repository rep, string message, IList<ObjectId> parents, ObjectId indexTreeId, PersonIdent author, PersonIdent committer) { try { ObjectInserter odi = rep.NewObjectInserter (); try { // Create a Commit object, populate it and write it NGit.CommitBuilder commit = new NGit.CommitBuilder (); commit.Committer = committer; commit.Author = author; commit.Message = message; commit.SetParentIds (parents); commit.TreeId = indexTreeId; ObjectId commitId = odi.Insert (commit); odi.Flush (); return commitId; } finally { odi.Release (); } } catch (UnmergedPathException) { // since UnmergedPathException is a subclass of IOException // which should not be wrapped by a JGitInternalException we // have to catch and re-throw it here throw; } catch (IOException e) { throw new JGitInternalException ("Commit failed", e); } }