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

Re: [PATCH v3] merge-options.txt: clarify meaning of various ff-related options

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 30, 2019, 19:57 UTC
Message-ID
<xmqq7e6uxw7r.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<20190828225712.20041-1-newren@gmail.com>
Elijah Newren <newren@gmail.com> writes:
Show 28 quoted lines
> diff --git a/Documentation/merge-options.txt b/Documentation/merge-options.txt
> index 79a00d2a4a..ed3804650b 100644
> --- a/Documentation/merge-options.txt
> +++ b/Documentation/merge-options.txt
> @@ -40,20 +40,26 @@ set to `no` at the beginning of them.
>  	case of a merge conflict.
>  
>  --ff::
>  --no-ff::
>  --ff-only::
> +	Whether to prefer resolving the merge as a fast forward (only
> +	updating the branch pointer to match the merged branch and not
> +	creating a merge commit), to never allow it (always creating a
> +	merge commit), or to only allow fast forward updates.  The
> +	default is `--ff`, except when merging an annotated (and
> +	possibly signed) tag that is not stored in its natural place
> +	in the `refs/tags/` hierarchy (in which case `--no-ff` is
> +	assumed).
> ++
> +With `--ff`, resolve the merge as a fast-forward when possible (when the
> +merged branch contains the current branch in its history).  When not
> +possible, create a merge commit.
> ++
> +With `--no-ff`, create a merge commit in all cases, even when the merge
> +could instead be resolved as a fast-forward.
> ++
> +With `--ff-only`, resolve the merge as a fast-forward when possible.
> +When not possible, refuse to merge and exit with a non-zero status.

I cannot shake the feeling that the above redundantly repeats the same thing twice.

If we want to dedicate one paragraph for each of these options, we can and should make the introductory paragraph lighter by saying something like

	Specifies how a merge is handled when the merged-in history
	is already a descendant of the current history.  `--ff` is
	the default unless merging an annotated or signed tag that
	is not stored in the `refs/tags/` hierarchy, in which case
	`--no-ff` is the default.

Alternatively, we could sprinkle the actual option name in the first paragraph and drop the last three paragraphs, while fattening the description as necessary, e.g.

	Whether to prefer resolving the merge as a fast-forward and
	update the branch pointer to match the merged branch without
	creating an extra merge commit (`--ff`), never allow fast-forward
	and always creating an extra merge commit (`--no-ff`), or to
	only allow fast forward updates and reject when a merge
	commit needs to be created (`--ff-only`).  The default is ...

I think either approach shown above would reduce the redundancy. I do not care too deeply which one of these approaches is used myself, but the redundancy feels a bit disturbing.

Thanks.
Previous: Elijah NewrenNext: Eric Sunshine
Message 11 of 16 in “merge-options.txt: clarify meaning of various ff-related options”
  1. merge-options.txt: clarify meaning of various ff-related optionsElijah Newren, Aug 28, 2019
  2. Sergey OrganovAug 28, 2019
  3. merge-options.txt: clarify meaning of various ff-related optionsElijah Newren, Aug 28, 2019
  4. Martin ÅgrenAug 28, 2019
  5. Sergey OrganovAug 28, 2019
  6. Martin ÅgrenAug 28, 2019
  7. Sergey OrganovAug 29, 2019
  8. Elijah NewrenAug 28, 2019
  9. Sergey OrganovAug 29, 2019
  10. merge-options.txt: clarify meaning of various ff-related optionsElijah Newren, Aug 28, 2019
  11. Junio C HamanoAug 30, 2019
  12. Eric SunshineAug 30, 2019
  13. merge-options.txt: clarify meaning of various ff-related optionsElijah Newren, Aug 31, 2019
  14. Junio C HamanoAug 30, 2019
  15. Elijah NewrenAug 30, 2019
  16. Junio C HamanoAug 30, 2019

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.