From: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> Changes since the last version - reworked the second patch based on Junio's feedback so it no longer sets GIT_REFLOG_ACTION - reworded commit messages - print_commit_summary() no longer dies but returns an error so the sequencer can exit cleanly - reworked the last patch to return errors rather than dying when creating a commit and to use the correct commit message with intermediate squashes. - rebased onto next as there were some conflicting changes in builtin/commit.c - updated benchmarks compared to v2.15.0 (the percentage difference is essentially the same) - fixed some style issues Here's the summary from the previous version These patches teach the sequencer to create commits without forking git commit when the commit message does not need to be edited. This speeds up cherry picking 10 commits by 26% and picking 10 commits with rebase --continue by 44%. The first few patches move bits of builtin/commit.c to sequencer.c. The last two patches actually implement creating commits in sequencer.c. Phillip Wood (8): commit: move empty message checks to libgit Add a function to update HEAD after creating a commit commit: move post-rewrite code to libgit commit: move print_commit_summary() to libgit sequencer: don't die in print_commit_summary() sequencer: simplify adding Signed-off-by: trailer sequencer: load commit related config sequencer: try to commit without forking 'git commit' builtin/commit.c | 260 ++------------------------ builtin/rebase--helper.c | 13 +- builtin/revert.c | 15 +- sequencer.c | 478 ++++++++++++++++++++++++++++++++++++++++++++++- sequencer.h | 21 +++ 5 files changed, 531 insertions(+), 256 deletions(-) -- 2.14.3