Re: Extending and updating gitglossary
From: Jakub Narębski <hidden>
Date: 2020-11-10 23:52:33
Hello Philip, Philip Oakley [off-list ref] writes:
On 10/11/2020 01:35, Jakub Narębski wrote:quoted
Philip Oakley [off-list ref] writes:quoted
On 06/11/2020 18:26, Jakub Narębski wrote:quoted
Junio C Hamano [off-list ref] writes:quoted
Philip Oakley [off-list ref] writes:quoted
This may be not part of the the main project, but could you consider, if time permits, also adding some entries into the Git Glossary (`git help glossary`) for the various terms we are using here and elsewhere, e.g. 'topological levels', 'generation number', 'corrected commit date' (and its fancy technical name for the use of date heuristics e.g. the 'chronological ordering';). The glossary can provide a reference, once the issues are resolved. The History Simplification and Commit Ordering section of git-log maybe a useful guide to some of the terms that would link to the glossary.
[...]
quoted
What terms you feel need glossary entry?While it was Junio that made the comment, I'd agree that we should be using the glossary to explain, in a general sense, the terms that are used is a specialist sense. As the user community expands, their natural understanding of some of the terms diminishes.
I was hoping for a list of terms from the abovementioned sections of git-log manpage you feel need entry in gitglosary(7). [...]
quoted
To be more precise, I think that user-facing glossary should include only terms that appear in user-facing documentation and in output messages of Git commands (with the possible exception of maybe output messages of some low-level plumbing).And where implied, the underlying concepts when they aren't obvious, or lack general terms (e.g. the 'staging area' discussions)
True, 'staging area' should IMVHO be in glossary (replacing or in addition to older less specific term 'index', previous name for 'staging area' term).
quoted
I think that the developer-facing glossary should include terms that appear in technical documentation, and in commit messages in Git history.
Such as 'topological levels', 'commit slab' / 'on the slab', etc.
quoted
quoted
However we do mention "topolog*" in a number of the manual pages, and rather less, as yet, in the technical pages. "Lexicographic" and "chronological" are in the same group of fancy technical words ;-)I think that 'topological level' would appear only in technical documentation; if it would be the case then there is no reason to add it to user-facing glossary (to gitglossary manpage). 'Topological order' or 'topological sort', 'lexicographical order' and 'chronological order' are not Git-specific terms, and there are no Git-specific ambiguities. I am therefore a bit unsure about adding them to *Git* glossary.It is that they aren't terms used in normal speech, so many folks do not comprehend the implied precision that the docs assume, nor the problems they may hide.
Right.
quoted
- In computer science, a _topological sort_ or _topological_ ordering of a directed graph is a linear ordering of its vertices such that for every directed edge uv from vertex u to vertex v, u comes before v in the ordering.Does this imply that those who aren't computer scientists shouldn't be using Git?
I think that in most cases where we refer to topological order in the documentation we describe it there. It might be good idea to add it to the glossary, especially because Git uses it often in a very specific sense. On the other hand, should we define 'topology' or 'graph' as well? Or 'glossary' ;-) ? Those don't have any special meaning in Git, and can be as well found in the dictionary or Wikipedia.
quoted
For Git it means that top to bottom, commits always appear before their parents. With `--graph` or `--topo-order` Git also avoids showing commits on multiple lines of history intermixed. - In mathematics, the _lexicographic_ or _lexicographical order_ (also known as lexical order, dictionary order, etc.) is a generalization of the alphabetical order. For Git it is simply alphabetical order.ASCII order, Case sensitivity, Special characters, etc.
Actually I don't know. Let me check: the only place this term appears in the documentation is in git-tag(1) manpage and related documentation. It simplly uses strcmp(), or strcasecmp() when using `--ignore-case` option; so by default case sensitive. It looks like it does not take locale-specific rules.
quoted
- _Chronological order_ is the arrangement of things following one after another in time; or in other words date order.Given that most résumés (the thing most folk see that asks for date order) is latest first, does this clarify which way chronological is? (I see this regularly in my other volunteer work).
Right, it might be not obvious at first glance that Git outputs most recent commits first, that is newest commits are on top. Though if you think about it in more detail, it is the only ordering that makes sense, especially for projects with a long history; first, it is newest commits that are most interesting, and second Git always walks the history from child to parent.
quoted
Note that `git log --date-order` commits also always appear before their parents, but otherwise commits are shown in the commit timestamp order (committer date order)
[...]
quoted
quoted
Git does rip up most of what folks think about version "control", usually based on the imperfect replication of physical artefacts.I don't quite understand what you wanted to say there. Could you explain in more detail, please?Background, I see Git & Version Control from an engineers view point, rather than developers view. In the "real" world there are no perfect copies, we serialise key items so that we can track their degradation, and replace them when required. We attempt to "Control" what is happening. Our documentation and monitoring systems have layers of control to ensure only suitably qualified persons may access and inspect critical items, can record and access previous status reports, etc. There is only one "Mona Lisa", with critical access controls, even though there are 'copies' https://en.wikipedia.org/wiki/Mona_Lisa#Early_versions_and_copies. Almost all of our terminology for configuration control comes from the 'real' world, i.e. pre-modern computing. Git turns all that on its head. We can make perfect duplicates (they're not copies, not replicas..). The Object name is immutable. It's either right or wrong (exempt the SHAttered sha-1 breakage; were moving to sha-256). Git does *not* provide any access control. It supports the 'software freedoms' by distributing the control to the user. The repository is a version storage system, and the OIDs allow easy authentication between folks that they are looking at the same object, and all its implied descendants. Git has ripped up classical 'real' world version control. In many areas we need new or alternative terms, and documents that explain them to screen writers(*) and the many other non CS-major users of Git (and some engineers;-) (*) there's a diff pattern for them, IIRC, or at least one was proposed.
Right, though for me the concept of 'version control' was by default always about the digital, usually the source code. There are different editions of books, changes to non-digital technical drawings and plans (AFAIK often in the form of physical foil overlays as subsequent layers, if done well; overdrawing on the same layer if not), amendment and changes to laws, etc. Anyway, the question is what level of knowledge can we assume from the average Git user -- this would affect the spread of terms that should be considered for the Git glossary. Best, -- Jakub Narębski