mirror of
https://github.com/git/git
synced 2024-10-12 11:32:34 +00:00
pull: display default warning only when non-ff
There's no need to display the annoying warning on every pull... only the ones that are not fast-forward. The current warning tests still pass, but not because of the arguments or the configuration, but because they are all fast-forward. We need to test non-fast-forward situations now. Suggestions-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
7539fdc629
commit
c525de335e
|
@ -949,6 +949,7 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
|
||||||
struct object_id rebase_fork_point;
|
struct object_id rebase_fork_point;
|
||||||
int autostash;
|
int autostash;
|
||||||
int rebase_unspecified = 0;
|
int rebase_unspecified = 0;
|
||||||
|
int can_ff;
|
||||||
|
|
||||||
if (!getenv("GIT_REFLOG_ACTION"))
|
if (!getenv("GIT_REFLOG_ACTION"))
|
||||||
set_reflog_message(argc, argv);
|
set_reflog_message(argc, argv);
|
||||||
|
@ -1044,7 +1045,9 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
|
||||||
if (opt_rebase && merge_heads.nr > 1)
|
if (opt_rebase && merge_heads.nr > 1)
|
||||||
die(_("Cannot rebase onto multiple branches."));
|
die(_("Cannot rebase onto multiple branches."));
|
||||||
|
|
||||||
if (rebase_unspecified && !opt_ff) {
|
can_ff = get_can_ff(&orig_head, &merge_heads.oid[0]);
|
||||||
|
|
||||||
|
if (rebase_unspecified && !opt_ff && !can_ff) {
|
||||||
if (opt_verbosity >= 0)
|
if (opt_verbosity >= 0)
|
||||||
show_advice_pull_non_ff();
|
show_advice_pull_non_ff();
|
||||||
}
|
}
|
||||||
|
@ -1063,7 +1066,7 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
|
||||||
submodule_touches_in_range(the_repository, &upstream, &curr_head))
|
submodule_touches_in_range(the_repository, &upstream, &curr_head))
|
||||||
die(_("cannot rebase with locally recorded submodule modifications"));
|
die(_("cannot rebase with locally recorded submodule modifications"));
|
||||||
if (!autostash) {
|
if (!autostash) {
|
||||||
if (get_can_ff(&orig_head, &merge_heads.oid[0])) {
|
if (can_ff) {
|
||||||
/* we can fast-forward this without invoking rebase */
|
/* we can fast-forward this without invoking rebase */
|
||||||
opt_ff = "--ff-only";
|
opt_ff = "--ff-only";
|
||||||
ran_ff = 1;
|
ran_ff = 1;
|
||||||
|
|
|
@ -29,11 +29,8 @@ test_expect_success 'setup' '
|
||||||
|
|
||||||
test_expect_success 'pull.rebase not set' '
|
test_expect_success 'pull.rebase not set' '
|
||||||
git reset --hard c0 &&
|
git reset --hard c0 &&
|
||||||
git -c color.advice=always pull . c1 2>err &&
|
git pull . c1 2>err &&
|
||||||
test_decode_color <err >decoded &&
|
test_i18ngrep ! "Pulling without specifying how to reconcile" err
|
||||||
test_i18ngrep "<YELLOW>hint: " decoded &&
|
|
||||||
test_i18ngrep "Pulling without specifying how to reconcile" decoded
|
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'pull.rebase not set and pull.ff=true' '
|
test_expect_success 'pull.rebase not set and pull.ff=true' '
|
||||||
|
@ -87,6 +84,65 @@ test_expect_success 'pull.rebase not set and --ff-only given' '
|
||||||
test_i18ngrep ! "Pulling without specifying how to reconcile" err
|
test_i18ngrep ! "Pulling without specifying how to reconcile" err
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'pull.rebase not set (not-fast-forward)' '
|
||||||
|
git reset --hard c2 &&
|
||||||
|
git -c color.advice=always pull . c1 2>err &&
|
||||||
|
test_decode_color <err >decoded &&
|
||||||
|
test_i18ngrep "<YELLOW>hint: " decoded &&
|
||||||
|
test_i18ngrep "Pulling without specifying how to reconcile" decoded
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'pull.rebase not set and pull.ff=true (not-fast-forward)' '
|
||||||
|
git reset --hard c2 &&
|
||||||
|
test_config pull.ff true &&
|
||||||
|
git pull . c1 2>err &&
|
||||||
|
test_i18ngrep ! "Pulling without specifying how to reconcile" err
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'pull.rebase not set and pull.ff=false (not-fast-forward)' '
|
||||||
|
git reset --hard c2 &&
|
||||||
|
test_config pull.ff false &&
|
||||||
|
git pull . c1 2>err &&
|
||||||
|
test_i18ngrep ! "Pulling without specifying how to reconcile" err
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'pull.rebase not set and pull.ff=only (not-fast-forward)' '
|
||||||
|
git reset --hard c2 &&
|
||||||
|
test_config pull.ff only &&
|
||||||
|
test_must_fail git pull . c1 2>err &&
|
||||||
|
test_i18ngrep ! "Pulling without specifying how to reconcile" err
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'pull.rebase not set and --rebase given (not-fast-forward)' '
|
||||||
|
git reset --hard c2 &&
|
||||||
|
git pull --rebase . c1 2>err &&
|
||||||
|
test_i18ngrep ! "Pulling without specifying how to reconcile" err
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'pull.rebase not set and --no-rebase given (not-fast-forward)' '
|
||||||
|
git reset --hard c2 &&
|
||||||
|
git pull --no-rebase . c1 2>err &&
|
||||||
|
test_i18ngrep ! "Pulling without specifying how to reconcile" err
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'pull.rebase not set and --ff given (not-fast-forward)' '
|
||||||
|
git reset --hard c2 &&
|
||||||
|
git pull --ff . c1 2>err &&
|
||||||
|
test_i18ngrep ! "Pulling without specifying how to reconcile" err
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'pull.rebase not set and --no-ff given (not-fast-forward)' '
|
||||||
|
git reset --hard c2 &&
|
||||||
|
git pull --no-ff . c1 2>err &&
|
||||||
|
test_i18ngrep ! "Pulling without specifying how to reconcile" err
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'pull.rebase not set and --ff-only given (not-fast-forward)' '
|
||||||
|
git reset --hard c2 &&
|
||||||
|
test_must_fail git pull --ff-only . c1 2>err &&
|
||||||
|
test_i18ngrep ! "Pulling without specifying how to reconcile" err
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'merge c1 with c2' '
|
test_expect_success 'merge c1 with c2' '
|
||||||
git reset --hard c1 &&
|
git reset --hard c1 &&
|
||||||
test -f c0.c &&
|
test -f c0.c &&
|
||||||
|
|
Loading…
Reference in a new issue