On Tue, May 22, 2018 at 6:31 AM, Alban Gruin <alban.gruin@xxxxxxxxx> wrote: > This duplicates git-rebase--interactive.sh to > git-rebase--preserve-merges.sh. This is done to split -p from -i. No > modifications are made to this file here, but any code that is not used by -p > will be stripped in the next commit. > > Signed-off-by: Alban Gruin <alban.gruin@xxxxxxxxx> So how would I best review this? I applied the patches locally[1], and ran git-ls-tree on this commit hoping to find the same blob id for git-rebase--interactive.sh as for git-rebase--preserve-merges.sh; however I did not. So I diffed them and had the diff below[2], which looks like that has parts of Johannes recent series? Thanks, Stefan [1] After applying I pushed it to https://github.com/stefanbeller/git/tree/alban_split_off_-p and this patch is commit 9f64342ea1b64d43e4675b5f202174c9e0f77dbf [2] $ git diff 9f64342ea1b64d43e4675b5f202174c9e0f77dbf:git-rebase--preserve-merges.sh \ 9f64342ea1b64d43e4675b5f202174c9e0f77dbf:git-rebase--interactive.sh diff --git a/git-rebase--preserve-merges.sh b/git-rebase--interactive.sh index 9947e6265fe..2f4941d0fc9 100644 --- a/git-rebase--preserve-merges.sh +++ b/git-rebase--interactive.sh @@ -155,13 +155,19 @@ reschedule_last_action () { append_todo_help () { gettext " Commands: -p, pick = use commit -r, reword = use commit, but edit the commit message -e, edit = use commit, but stop for amending -s, squash = use commit, but meld into previous commit -f, fixup = like \"squash\", but discard this commit's log message -x, exec = run command (the rest of the line) using shell -d, drop = remove commit +p, pick <commit> = use commit +r, reword <commit> = use commit, but edit the commit message +e, edit <commit> = use commit, but stop for amending +s, squash <commit> = use commit, but meld into previous commit +f, fixup <commit> = like \"squash\", but discard this commit's log message +x, exec <commit> = run command (the rest of the line) using shell +d, drop <commit> = remove commit +l, label <label> = label current HEAD with a name +t, reset <label> = reset HEAD to a label +m, merge [-C <commit> | -c <commit>] <label> [# <oneline>] +. create a merge commit using the original merge commit's +. message (or the oneline, if no original merge commit was +. specified). Use -c <commit> to reword the commit message. These lines can be re-ordered; they are executed from top to bottom. " | git stripspace --comment-lines >>"$todo" @@ -888,6 +894,8 @@ init_revisions_and_shortrevisions () { else revisions=$onto...$orig_head shortrevisions=$shorthead + test -z "$squash_onto" || + echo "$squash_onto" >"$state_dir"/squash-onto fi } @@ -942,7 +950,7 @@ EOF die "Could not skip unnecessary pick commands" checkout_onto - if test -z "$rebase_root" && test ! -d "$rewritten" + if test ! -d "$rewritten" then require_clean_work_tree "rebase" exec git rebase--helper ${force_rebase:+--no-ff} $allow_empty_message \ @@ -964,6 +972,8 @@ git_rebase__interactive () { init_revisions_and_shortrevisions git rebase--helper --make-script ${keep_empty:+--keep-empty} \ + ${rebase_merges:+--rebase-merges} \ + ${rebase_cousins:+--rebase-cousins} \ $revisions ${restrict_revision+^$restrict_revision} >"$todo" || die "$(gettext "Could not generate todo list")"