A --ff option to allow "git cherry-pick" to fast forward if possible was added in a previous patch, and this behavior may become the default one in the future. So to future proof scripts that may rely on the current behavior it is safer to add a --no-ff option to make sure that the current behavior will be used. Requested-by: Paolo Bonzini <bonzini@xxxxxxx> Signed-off-by: Christian Couder <chriscool@xxxxxxxxxxxxx> --- Documentation/git-cherry-pick.txt | 6 +++++- builtin/revert.c | 4 +++- t/t3506-cherry-pick-ff.sh | 8 ++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Documentation/git-cherry-pick.txt b/Documentation/git-cherry-pick.txt index d71607a..dfc8243 100644 --- a/Documentation/git-cherry-pick.txt +++ b/Documentation/git-cherry-pick.txt @@ -7,7 +7,7 @@ git-cherry-pick - Apply the change introduced by an existing commit SYNOPSIS -------- -'git cherry-pick' [--edit] [-n] [-m parent-number] [-s] [-x] [--ff] <commit> +'git cherry-pick' [--edit] [-n] [-m parent-number] [-s] [-x] [--[no-]ff] <commit> DESCRIPTION ----------- @@ -75,6 +75,10 @@ effect to your index in a row. cherry-pick'ed commit, then a fast forward to this commit will be performed. +--no-ff:: + Does nothing right now, but in the future this may disallow + fast forward if it becomes the default behavior. + Author ------ Written by Junio C Hamano <gitster@xxxxxxxxx> diff --git a/builtin/revert.c b/builtin/revert.c index b3e1fea..1a650e4 100644 --- a/builtin/revert.c +++ b/builtin/revert.c @@ -32,7 +32,7 @@ static const char * const cherry_pick_usage[] = { NULL }; -static int edit, no_commit, mainline, signoff, ff_ok; +static int edit, no_commit, mainline, signoff, ff_ok, no_ff; static int flags; static struct commit *commit; static const char *commit_name; @@ -59,6 +59,7 @@ static void parse_args(int argc, const char **argv) OPT_BOOLEAN('r', NULL, &noop, "no-op (backward compatibility)"), OPT_BOOLEAN('s', "signoff", &signoff, "add Signed-off-by:"), OPT_BOOLEAN(0, "ff", &ff_ok, "allow fast forward"), + OPT_BOOLEAN(0, "no-ff", &no_ff, "disallow fast forward"), OPT_INTEGER('m', "mainline", &mainline, "parent number"), OPT_RERERE_AUTOUPDATE(&allow_rerere_auto), OPT_END(), @@ -78,6 +79,7 @@ static void parse_args(int argc, const char **argv) die_if_ff_incompatible(flags & PICK_ADD_NOTE, "-x"); die_if_ff_incompatible(no_commit, "--no-commit"); die_if_ff_incompatible(signoff, "--signoff"); + die_if_ff_incompatible(no_ff, "--no-ff"); } } diff --git a/t/t3506-cherry-pick-ff.sh b/t/t3506-cherry-pick-ff.sh index e17ae71..2d7e532 100755 --- a/t/t3506-cherry-pick-ff.sh +++ b/t/t3506-cherry-pick-ff.sh @@ -35,6 +35,14 @@ test_expect_success 'cherry-pick not using --ff does not fast forwards' ' test "$(git rev-parse --verify HEAD)" != "$(git rev-parse --verify second)" ' +test_expect_success 'cherry-pick using --no-ff does not fast forwards' ' + git checkout master && + git reset --hard first && + test_tick && + git cherry-pick --no-ff second && + test "$(git rev-parse --verify HEAD)" != "$(git rev-parse --verify second)" +' + # # We setup the following graph: # -- 1.7.0.321.g2d270 -- 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