git-rebase uses "format-patch --ignore-if-in-upstream" do determine which commits to apply. This may or may not be desired: a user may want to transplant all commits, or may opt to avoid the possibly time consuming calculation of patch-ids. Therefore, introduce rebase.cherry (defaulting to true) and --cherry and --no-cherry options (to override the config), where --cherry means the current behavior and --no-cherry avoids "--ignore-if-in-upstream". Signed-off-by: Michael J Gruber <git@xxxxxxxxxxxxxxxxxxxx> --- RFC for obvious reasons (doc, tests). git-rebase.sh | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletions(-) diff --git a/git-rebase.sh b/git-rebase.sh index ab4afa7..1eb6ad1 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -53,6 +53,7 @@ git_am_opt= rebase_root= force_rebase= allow_rerere_autoupdate= +cherry=$(git config --bool rebase.cherry) continue_merge () { test -n "$prev_head" || die "prev_head must be defined" @@ -307,6 +308,12 @@ do esac do_merge=t ;; + --cherry) + cherry=true + ;; + --no-cherry) + cherry=false + ;; -n|--no-stat) diffstat= ;; @@ -540,9 +547,16 @@ else revisions="$upstream..$orig_head" fi +if test "x$cherry" = "xfalse" +then + cherry_opt="" +else + cherry_opt="--ignore-if-in-upstream" +fi + if test -z "$do_merge" then - git format-patch -k --stdout --full-index --ignore-if-in-upstream \ + git format-patch -k --stdout --full-index $cherry_opt \ $root_flag "$revisions" | git am $git_am_opt --rebasing --resolvemsg="$RESOLVEMSG" && move_to_original_branch -- 1.7.2.rc1.212.g850a -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html