From: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> I've reworked the config handling since v4. It now stores the default values in struct replay_opt rather than using global variables and calls git_diff_basic_config(). Unfortunately I've not had time to modify git_gpg_config() to indicate if it successfully handled the key so git_diff_basic_config() is called unnecessarily in that case. Within git_diff_basic_config() userdiff_config() also suffers from the same problem of not indicating if it has handled the key. Here's the original summary: 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 (9): t3404: check intermediate squash messages 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: simplify adding Signed-off-by: trailer sequencer: load commit related config sequencer: try to commit without forking 'git commit' t3512/t3513: remove KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1 builtin/commit.c | 289 +++-------------------- builtin/rebase--helper.c | 2 +- builtin/revert.c | 4 +- sequencer.c | 495 ++++++++++++++++++++++++++++++++++++++- sequencer.h | 24 ++ t/t3404-rebase-interactive.sh | 4 + t/t3512-cherry-pick-submodule.sh | 1 - t/t3513-revert-submodule.sh | 1 - 8 files changed, 549 insertions(+), 271 deletions(-) -- 2.15.1