I've incorporated review feed back to date. I'm split the change into 9 commits with each commit do a single class of operation. I've prepared these commits using github and have Travis-CI setup to test my changes. Of the 9 commits 2 failed, the 1st and 5th commits, I tested those two locally and they were fine. I then restarted the builds on Travis-CI they finished fine so it seems the errors were spurious. Wink Saville (9): Simplify pick_on_preserving_merges Call git_rebase__interactive from run_specific_rebase Indent function git_rebase__interactive Extract functions out of git_rebase__interactive Use new functions in git_rebase__interactive Add and use git_rebase__interactive__preserve_merges Remove unused code paths from git_rebase__interactive Remove unused code paths from git_rebase__interactive__preserve_merges Remove merges_option and a blank line git-rebase--interactive.sh | 407 ++++++++++++++++++++++++--------------------- git-rebase.sh | 16 +- 2 files changed, 229 insertions(+), 194 deletions(-) -- 2.16.2