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

Re: [PATCH v3 01/16] doc: pull: explain what is a fast-forward

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Dec 8, 2020, 00:17 UTC
Message-ID
<CAMP44s0g7JLTZZs=O3gUcEiPt--p3gXEPHL0GsBqoqweKA=9Rw@mail.gmail.com>
In-Reply-To
<CABPp-BEkKMuZHWJ8mrFUFm3okDDsMHeZZNxtGzgq-RLLddMxdw@mail.gmail.com>
On Mon, Dec 7, 2020 at 4:40 PM Elijah Newren <newren@gmail.com> wrote:
> On Mon, Dec 7, 2020 at 2:22 PM Felipe Contreras
> <felipe.contreras@gmail.com> wrote:
Show 10 quoted lines
> > The glossary defines a fast-forward as:
> >
> >   A fast-forward is a special type of `merge`
> >
> > So, if you consider "merge" a noun, then a fast-forward is an
> > adjective. If you consider it a verb, then it's an adverb. But it's
> > not a verb.
>
> A square is a special type of a rectangle, but that doesn't make
> "square" an adjective; both square and rectangle are nouns.

Words have multiple definitions. The word "square" is both a noun, and an adjective [1]. It's perfectly fine to say "square corner".

Just like it's perfectly fine to say "fast-forward merge", or "quick sort".
And that's how many people use it:

https://git-scm.com/docs/git-merge#_fast_forward_merge https://docs.gitlab.com/ee/user/project/merge_requests/fast_forward_merge.html https://www.atlassian.com/git/tutorials/using-branches/git-merge#:~:text=Fast%20Forward%20Merge

Plus there's many instances in the documentation:
* non-fast-forward update
* fast-forward merges
* fast-forward check
* "fast-forward-ness"
* fast-forward situation
* fast-forward push
* non-fast-forward pushes
* non-fast-forward reference
* fast-forward cases
* "fast-forward" merge
Show 11 quoted lines
> > If it was a verb, then we should have `git fast-forward`, which may
> > not be a terrible idea, but right now a fast-forward is a modifier.
> >
> > At least that's what I have in my mind, and the glossary seems to agree.
>
> If you read the release notes and even various messages printed by
> git, "fast-forwards", "fast-forwarded", "fast-forwarding", and "to
> fast-forward" all appear multiple times.  And yes, "fast-forward" also
> appears multiple times as a noun in addition to the various uses as a
> verb.  So, I'd say the glossary just isn't comprehensive because in
> this case we have a word that serves as both a noun and a verb.

It can be a noun, a verb, an adjective, and an adverb. But the question is not what it can be, but what it actually is. I'm just telling you my rationale:

1. noun: it doesn't make sense because you don't create, pick, show,
or push a "fast-forward"
2. verb: there's no idiom to tell git "do fast-forward"
3. adjective: there are merge nouns (commits), but no instances of
fast-forward merge commits, like say octopus merge commits
4. adverb: you can tell git "do merge", and "do fast-forward merge"
So, in my opinion a fast-forward today can only logically be an adverb.

Like a bubble sort is a special type of sort, and theoretically you can say "do a bubble", but it's just weird. My mind is left hanging: a bubble $what? Likewise, when people say "do me a solid", I'm annoyed... A solid $what?! They mean "a solid favor". People do it, so it's part of language, but it doesn't stop it from being weird in my opinion.

An adverb typically answers the question "in what way?". Do me a favor... In what way? In a solid way. Do a sort... In what way? In a quick way. Do a move... In what way? In a bold way. Do a merge... In what way? In a fast-forward way.

> Going back to the text Junio highlighted, I agree with him that the
> phrase looks really awkward, and much prefer his suggestion
> (regardless of whether it aligns with the current glossary).

Normally I don't show credentials, but in this case I think it might be relevant. I've read multiple linguists, like Noam Chomsky, and Steven Pinker. I follow many others and read their articles. I also read The Pinker's Sense of Style: The Thinking Person's Guide to Writing in the 21st Century [2], which I can't recommend enough for people writing technical documents or any other classic style. I have an arguably successful blog with more than 200 articles and more than 1 million views, which is regularly linked from other blogs, and technical resources. I constantly get thanked both in person, and online for what I write. And at some point I was asked by a publisher to write a book about Git (which I didn't feel prepared for at that time).

So, clearly at least some people value the way I write.

I'm not trying to be stubborn here, I just honestly put effort into the art of writing, and I do care deeply about language.

Of course I might be wrong in this particular instance, but if I am, it's not because of lack of effort.

I think fast-forward is mainly an adverb, but even if it isn't the main usage; it's still clearly an usage.

Cheers.

[1] https://www.merriam-webster.com/dictionary/square [2] https://www.amazon.com/Sense-Style-Thinking-Persons-Writing/dp/0143127799

-- 
Felipe Contreras
Previous: Felipe ContrerasNext: Elijah Newren
Message 8 of 33 in “pull: default warning improvements”
  1. 00/16 pull: default warning improvementsFelipe Contreras, Dec 5, 2020
  2. 01/16 doc: pull: explain what is a fast-forwardFelipe Contreras, Dec 5, 2020
  3. Junio C HamanoDec 7, 2020
  4. Felipe ContrerasDec 7, 2020
  5. Elijah NewrenDec 7, 2020
  6. Junio C HamanoDec 7, 2020
  7. Felipe ContrerasDec 8, 2020
  8. Felipe ContrerasDec 8, 2020
  9. Elijah NewrenDec 8, 2020
  10. Felipe ContrerasDec 8, 2020
  11. Felipe ContrerasDec 8, 2020
  12. 03/16 pull: refactor fast-forward checkFelipe Contreras, Dec 5, 2020
  13. 05/16 pull: trivial cleanupFelipe Contreras, Dec 5, 2020
  14. 04/16 pull: cleanup autostash checkFelipe Contreras, Dec 5, 2020
  15. 02/16 pull: improve default warningFelipe Contreras, Dec 5, 2020
  16. Junio C HamanoDec 7, 2020
  17. Felipe ContrerasDec 7, 2020
  18. 16/16 pull: trivial memory fixFelipe Contreras, Dec 5, 2020
  19. 14/16 test: merge-pull-config: trivial cleanupFelipe Contreras, Dec 5, 2020
  20. 06/16 pull: move default warningFelipe Contreras, Dec 5, 2020
  21. 08/16 pull: trivial whitespace style fixFelipe Contreras, Dec 5, 2020
  22. 07/16 pull: display default warning only when non-ffFelipe Contreras, Dec 5, 2020
  23. 09/16 pull: introduce --merge optionFelipe Contreras, Dec 5, 2020
  24. 13/16 pull: add proper error with --ff-onlyFelipe Contreras, Dec 5, 2020
  25. Felipe ContrerasDec 5, 2020
  26. 1/2 pull: add proper error with --ff-onlyFelipe Contreras, Dec 5, 2020
  27. 2/2 tentative: pull: change the semantics of --ff-onlyFelipe Contreras, Dec 5, 2020
  28. 12/16 pull: move configurations fetchesFelipe Contreras, Dec 5, 2020
  29. 15/16 test: pull-options: revert unnecessary changesFelipe Contreras, Dec 5, 2020
  30. 10/16 pull: show warning with --ffFelipe Contreras, Dec 5, 2020
  31. 11/16 rebase: add REBASE_DEFAULTFelipe Contreras, Dec 5, 2020
  32. Junio C HamanoDec 7, 2020
  33. Felipe ContrerasDec 7, 2020

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.