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

Re: [PATCH/RFC] glossary: a revision is just a commit

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 21, 2013, 19:00 UTC
Message-ID
<7vy5cbso82.fsf@alter.siamese.dyndns.org>
In-Reply-To
<20130421081705.GG10429@elie.Belkin>
Jonathan Nieder <jrnieder@gmail.com> writes:
Show 10 quoted lines
> The current definition of 'revision' sounds like it is saying that a
> revision is a tree object.  In reality it is just a commit.
>
> This should be especially useful for people used to other revision
> control systems trying to see how familiar concepts translate into git
> terms.
>
> Reported-by: Ramkumar Ramachandra <artagnon@gmail.com>
> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
> ---

I think the existing glossary text is just confusing (it does wants to refer to a commit (noun) as a concept, as opposed to its concrete realization, i.e. a commit object, and tries to do so but does a bad job).

Your update is an improvement, but there may need a note that says that various web pages and documents, especially historical ones [*1*], may loosely use this word to refer to any single object that is not necessarily a commit at times.

Show 15 quoted lines
> diff --git a/Documentation/glossary-content.txt b/Documentation/glossary-content.txt
> index eb7ba84f..521fceeb 100644
> --- a/Documentation/glossary-content.txt
> +++ b/Documentation/glossary-content.txt
> @@ -430,9 +430,7 @@ should not be combined with other pathspec.
>  	<<def_merge,merge>> left behind.
>  
>  [[def_revision]]revision::
> -	A particular state of files and directories which was stored in the
> -	<<def_object_database,object database>>. It is referenced by a
> -	<<def_commit_object,commit object>>.
> +	Synonym for <<def_commit,commit>> (the noun).
>  
>  [[def_rewind]]rewind::
>  	To throw away part of the development, i.e. to assign the
[Footnote]

*1* The "rev-parse" command started as a tool to parse "revisions" aka "commit", "revision range" e.g. "A..B" and non-revisions (pathspecs) and flags. It was primarily designed as a way to sift arguments given to "git mylog -p A..B Makefile", so that a scripted "mylog" can turn it into a pipeline that feeds "git rev-list A..B Makefile" output as the input to "git diff-tree -p --stdin Makefile".

This was back when we did not even have non-committish extended SHA-1 object name notation. From the very start, "rev" in the name "rev-parse" did not even mean that it is limited to "revision" aka "commit". Later we added tree:path form of extended SHA-1 notation and "rev-parse --verify $it" has become its primary usage, while its role as argument sifter has diminished as we made "log" a built-in, not a pipeline. Around that time, we loosely started calling anything that get_sha1() can turn into an object name a "revision".

Also 99.9% of the time people use it to parse committish in real life.

For these reasons, I do not think it is wise to rename "rev-parse" to "object-name-parse". "rev" in "rev-parse" may be related to "revisions", and while it technically can operate on "revisions" (in the colloquial "object name" sense), it is not limited to revisions. And when it is used for revisions it mostly is used for "revisions" (in the "nothing but committish" sense). The name that most faithfully reflects the use of the command is "git kitchen-sink" these days.

The user still needs to know that in some context, "revision" may loosely refer to "object name" when talking about a single object, if only to understand the name of that command, let alone various tutorials, screencasts and web resources people made over time.

Previous: Jonathan Nieder
Message 35 of 35 in “Documentation/shortlog improvements”
  1. 0/5 Documentation/shortlog improvementsRamkumar Ramachandra, Apr 20, 2013
  2. 1/5 git-shortlog.txt: remove (-h|--help) from OPTIONSRamkumar Ramachandra, Apr 20, 2013
  3. 2/5 builtin/shortlog.c: make usage string consistent with logRamkumar Ramachandra, Apr 20, 2013
  4. 3/5 git-log.txt: fix description of <since>..<until>Ramkumar Ramachandra, Apr 20, 2013
  5. Jonathan NiederApr 20, 2013
  6. Ramkumar RamachandraApr 21, 2013
  7. Jonathan NiederApr 21, 2013
  8. Junio C HamanoApr 21, 2013
  9. Junio C HamanoApr 21, 2013
  10. 4/5 git-log.txt: rewrite note on why "--" may be requiredRamkumar Ramachandra, Apr 20, 2013
  11. Junio C HamanoApr 21, 2013
  12. Ramkumar RamachandraApr 21, 2013
  13. Junio C HamanoApr 21, 2013
  14. Ramkumar RamachandraApr 21, 2013
  15. Junio C HamanoApr 21, 2013
  16. Ramkumar RamachandraApr 21, 2013
  17. Jonathan NiederApr 21, 2013
  18. Ramkumar RamachandraApr 21, 2013
  19. Jonathan NiederApr 21, 2013
  20. Junio C HamanoApr 21, 2013
  21. Ramkumar RamachandraApr 21, 2013
  22. Ramkumar RamachandraApr 21, 2013
  23. Jonathan NiederApr 21, 2013
  24. Junio C HamanoApr 21, 2013
  25. Ramkumar RamachandraApr 21, 2013
  26. Junio C HamanoApr 22, 2013
  27. Thomas RastApr 22, 2013
  28. Thomas RastApr 22, 2013
  29. Junio C HamanoApr 22, 2013
  30. 5/5 git-shortlog.txt: make SYNOPSIS match log, update OPTIONSRamkumar Ramachandra, Apr 20, 2013
  31. Junio C HamanoApr 21, 2013
  32. Ramkumar RamachandraApr 21, 2013
  33. Ramkumar RamachandraApr 21, 2013
  34. glossary: a revision is just a commitJonathan Nieder, Apr 21, 2013
  35. Junio C HamanoApr 21, 2013

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.