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

Re: [RFC PATCH 05/35] fast-forward: add advice for novices

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Jul 6, 2021, 20:09 UTC
Message-ID
<878s2j5hk6.fsf@evledraar.gmail.com>
In-Reply-To
<20210705123209.1808663-6-felipe.contreras@gmail.com>
On Mon, Jul 05 2021, Felipe Contreras wrote:
Show 55 quoted lines
> It doesn't hurt showing it on `git merge --ff-only` too.
>
> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
> ---
>  advice.c        | 11 +++++++++++
>  advice.h        |  1 +
>  builtin/merge.c |  4 +++-
>  3 files changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/advice.c b/advice.c
> index 0b9c89c48a..8f068c8be9 100644
> --- a/advice.c
> +++ b/advice.c
> @@ -326,3 +326,14 @@ void detach_advice(const char *new_name)
>  
>  	fprintf(stderr, fmt, new_name);
>  }
> +
> +void diverging_advice(void)
> +{
> +	advise(_("Diverging branches can't be fast-forwarded, you need to either:\n"
> +		"\n"
> +		"\tgit merge\n"
> +		"\n"
> +		"or:\n"
> +		"\n"
> +		"\tgit rebase\n"));
> +}
> diff --git a/advice.h b/advice.h
> index bd26c385d0..6ce967c962 100644
> --- a/advice.h
> +++ b/advice.h
> @@ -97,5 +97,6 @@ void NORETURN die_resolve_conflict(const char *me);
>  void NORETURN die_conclude_merge(void);
>  void advise_on_updating_sparse_paths(struct string_list *pathspec_list);
>  void detach_advice(const char *new_name);
> +void diverging_advice(void);
>  
>  #endif /* ADVICE_H */
> diff --git a/builtin/merge.c b/builtin/merge.c
> index e396943d37..1836f98f82 100644
> --- a/builtin/merge.c
> +++ b/builtin/merge.c
> @@ -1625,8 +1625,10 @@ static int merge_common(int argc, const char **argv, const char *prefix,
>  		}
>  	}
>  
> -	if (fast_forward == FF_ONLY)
> +	if (fast_forward == FF_ONLY) {
> +		diverging_advice();
>  		die(_("unable to fast-forward"));
> +	}
>  
>  	if (autostash)
>  		create_autostash(the_repository,

...ah, and re my comment on the earlier patch here's where we're adding advice.

I'd think just squash that into this, or mention in the commit message "a later commit will add an advice() before this, where this new wording will make more sense" or something...

Previous: Felipe ContrerasNext: Felipe Contreras
Message 18 of 53 in “git update: fix broken git pull”
  1. 00/35 git update: fix broken git pullFelipe Contreras, Jul 5, 2021
  2. 01/35 merge: improve fatal fast-forward messageFelipe Contreras, Jul 5, 2021
  3. Ævar Arnfjörð BjarmasonJul 6, 2021
  4. Felipe ContrerasJul 6, 2021
  5. Randall S. BeckerJul 6, 2021
  6. Junio C HamanoJul 6, 2021
  7. Felipe ContrerasJul 6, 2021
  8. Randall S. BeckerJul 6, 2021
  9. Junio C HamanoJul 6, 2021
  10. Randall S. BeckerJul 6, 2021
  11. Felipe ContrerasJul 6, 2021
  12. Randall S. BeckerJul 6, 2021
  13. Felipe ContrerasJul 6, 2021
  14. 02/35 merge: split cmd_merge()Felipe Contreras, Jul 5, 2021
  15. 03/35 fast-forward: add new builtinFelipe Contreras, Jul 5, 2021
  16. 04/35 doc: fast-forward: explain what it isFelipe Contreras, Jul 5, 2021
  17. 05/35 fast-forward: add advice for novicesFelipe Contreras, Jul 5, 2021
  18. Ævar Arnfjörð BjarmasonJul 6, 2021
  19. Felipe ContrerasJul 6, 2021
  20. 06/35 fast-forward: make the advise configurableFelipe Contreras, Jul 5, 2021
  21. 07/35 fast-forward: add help about merge vs. rebaseFelipe Contreras, Jul 5, 2021
  22. 08/35 update: new built-inFelipe Contreras, Jul 5, 2021
  23. 09/35 update: add options and usage skeletonFelipe Contreras, Jul 5, 2021
  24. 10/35 update: add --ff optionFelipe Contreras, Jul 5, 2021
  25. Ævar Arnfjörð BjarmasonJul 6, 2021
  26. Felipe ContrerasJul 6, 2021
  27. 11/35 update: add --merge modeFelipe Contreras, Jul 5, 2021
  28. Ævar Arnfjörð BjarmasonJul 6, 2021
  29. Felipe ContrerasJul 6, 2021
  30. 12/35 commit: support for multiple MERGE_MODEFelipe Contreras, Jul 5, 2021
  31. 13/35 merge: add --reverse-parents optionFelipe Contreras, Jul 5, 2021
  32. 14/35 update: reverse the order of parentsFelipe Contreras, Jul 5, 2021
  33. 15/35 update: fake a reverse order of parents in messageFelipe Contreras, Jul 5, 2021
  34. 16/35 update: add --rebase modeFelipe Contreras, Jul 5, 2021
  35. 17/35 update: add mode configuationFelipe Contreras, Jul 5, 2021
  36. 18/35 update: add per-branch mode configurationFelipe Contreras, Jul 5, 2021
  37. 19/35 pull: cleanup autostash checkFelipe Contreras, Jul 5, 2021
  38. 20/35 pull: trivial cleanupFelipe Contreras, Jul 5, 2021
  39. 21/35 pull: trivial whitespace style fixFelipe Contreras, Jul 5, 2021
  40. 22/35 pull: introduce --merge optionFelipe Contreras, Jul 5, 2021
  41. 23/35 rebase: add REBASE_DEFAULTFelipe Contreras, Jul 5, 2021
  42. 24/35 pull: move configuration fetchesFelipe Contreras, Jul 5, 2021
  43. 25/35 pull: show warning with --ff optionsFelipe Contreras, Jul 5, 2021
  44. 26/35 pull: add pull.modeFelipe Contreras, Jul 5, 2021
  45. 27/35 pull: add per-branch mode configurationFelipe Contreras, Jul 5, 2021
  46. 28/35 pull: add pull.mode=fast-forwardFelipe Contreras, Jul 5, 2021
  47. 29/35 pull: reorganize mode conditionalsFelipe Contreras, Jul 5, 2021
  48. 30/35 pull: add diverging advice on fast-forward modeFelipe Contreras, Jul 5, 2021
  49. 31/35 pull: improve --rebase and pull.rebase interactionFelipe Contreras, Jul 5, 2021
  50. 32/35 pull: improve default warningFelipe Contreras, Jul 5, 2021
  51. 33/35 pull: advice of future changesFelipe Contreras, Jul 5, 2021
  52. 34/35 FUTURE: pull: enable ff-only mode by defaultFelipe Contreras, Jul 5, 2021
  53. 35/35 !fixup FUTURE: pull: enable ff-only mode by defaultFelipe Contreras, Jul 5, 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.