git/list[1] front-page[2] threads[3] people[4] search[5] about
 

RE: [PATCH] pull: abort if --ff-only is given and fast-forwarding is impossible

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Jul 11, 2021, 17:08 UTC
Message-ID
<60eb259e1a75d_974bf20895@natae.notmuch>
In-Reply-To
<20210711012604.947321-1-alexhenrie24@gmail.com>
Alex Henrie wrote:
> The warning about pulling without specifying how to reconcile divergent
> branches says that after setting pull.rebase to true, --ff-only can
> still be passed on the command line to require a fast-forward. Make that
> actually work.

I don't know where that is being said, but it's wrong: --ff-only is meant for merge only.

Show 13 quoted lines
> --- a/builtin/pull.c
> +++ b/builtin/pull.c
> @@ -1046,9 +1046,14 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
>  
>  	can_ff = get_can_ff(&orig_head, &merge_heads.oid[0]);
>  
> -	if (rebase_unspecified && !opt_ff && !can_ff) {
> -		if (opt_verbosity >= 0)
> -			show_advice_pull_non_ff();
> +	if (!can_ff) {
> +		if (opt_ff) {
> +			if (!strcmp(opt_ff, "--ff-only"))
> +				die_ff_impossible();
As I've mentioned multiple times already, this is wrong.
The advice clearly says:
  You can also pass --rebase, --no-rebase, or --ff-only on the command
  line to override the configured default per invocation.
With your patch now this is even less true:
  git -c pull.ff=only pull --rebase
Show 14 quoted lines
> +		} else {
> +			if (rebase_unspecified && opt_verbosity >= 0)
> +				show_advice_pull_non_ff();
> +		}
>  	}
>  
>  	if (opt_rebase) {
> diff --git a/t/t7601-merge-pull-config.sh b/t/t7601-merge-pull-config.sh
> index 52e8ccc933..b5a09a60f9 100755
> --- a/t/t7601-merge-pull-config.sh
> +++ b/t/t7601-merge-pull-config.sh
> @@ -183,6 +183,30 @@ test_expect_success 'pull prevents non-fast-forward with "only" in pull.ff' '
>  	test_must_fail git pull . c3
>  '

Can you add this test [1] so I don't have to explain the same thing over and over?

  test_expect_success 'pull allows non-fast-forward with "only" in pull.ff if --rebase' '
    git reset --hard c1 &&
    test_config pull.ff only &&
    git pull --rebase . c3
  '
Cheers.
Show 28 quoted lines
> +test_expect_success 'pull prevents non-fast-forward with pull.ff=only and pull.rebase=true' '
> +	git reset --hard c1 &&
> +	test_config pull.ff only &&
> +	test_config pull.rebase true &&
> +	test_must_fail git pull . c3
> +'
> +
> +test_expect_success 'pull prevents non-fast-forward with pull.ff=only and pull.rebase=false' '
> +	git reset --hard c1 &&
> +	test_config pull.ff only &&
> +	test_config pull.rebase false &&
> +	test_must_fail git pull . c3
> +'
> +
> +test_expect_success 'pull prevents non-fast-forward with --rebase --ff-only' '
> +	git reset --hard c1 &&
> +	test_must_fail git pull --rebase --ff-only . c3
> +'
> +
> +test_expect_success 'pull prevents non-fast-forward with --no-rebase --ff-only' '
> +	git reset --hard c1 &&
> +	test_must_fail git pull --no-rebase --ff-only . c3
> +'
> +
>  test_expect_success 'merge c1 with c2 (ours in pull.twohead)' '
>  	git reset --hard c1 &&
>  	git config pull.twohead ours &&
> -- 
[1] https://lore.kernel.org/git/20210711170703.651081-1-felipe.contreras@gmail.com/
-- 
Felipe Contreras
Previous: Alex HenrieNext: Alex Henrie
Message 2 of 28 in “pull: abort if --ff-only is given and fast-forwarding is impossible”
  1. pull: abort if --ff-only is given and fast-forwarding is impossibleAlex Henrie, Jul 11, 2021
  2. Felipe ContrerasJul 11, 2021
  3. Alex HenrieJul 11, 2021
  4. Felipe ContrerasJul 11, 2021
  5. Phillip WoodJul 12, 2021
  6. Felipe ContrerasJul 12, 2021
  7. Alex HenrieJul 12, 2021
  8. Felipe ContrerasJul 12, 2021
  9. Junio C HamanoJul 12, 2021
  10. Felipe ContrerasJul 12, 2021
  11. Elijah NewrenJul 12, 2021
  12. Felipe ContrerasJul 12, 2021
  13. Alex HenrieJul 12, 2021
  14. Alex HenrieJul 12, 2021
  15. Junio C HamanoJul 12, 2021
  16. Felipe ContrerasJul 12, 2021
  17. Elijah NewrenJul 12, 2021
  18. Junio C HamanoJul 12, 2021
  19. Felipe ContrerasJul 12, 2021
  20. Elijah NewrenJul 12, 2021
  21. Elijah NewrenJul 12, 2021
  22. Felipe ContrerasJul 12, 2021
  23. Phillip WoodJul 12, 2021
  24. Son Luong NgocJul 14, 2021
  25. Felipe ContrerasJul 14, 2021
  26. Elijah NewrenJul 14, 2021
  27. Junio C HamanoJul 14, 2021
  28. Felipe ContrerasJul 14, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.