Re: [PATCH] glossary: describe "worktree"
On Wed, Feb 9, 2022 at 6:19 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 32 quoted lines
>
> We have description on "per worktree ref", but "worktree" is not
> described in the glossary. We do have "working tree", though.
>
> Casually put, a "working tree" is what your editor and compiler
> interacts with. "worktree" is a mechanism to allow one or more
> "working tree"s to be attached to a repository and used to check out
> different commits and branches independently, which includes not
> just a "working tree" but also repository metadata like HEAD, the
> index to support simultaneous use of them. Historically, we used
> these terms interchangeably but we have been trying to use "working
> tree" when we mean it, instead of "worktree".
>
> Most of the existing references to "working tree" in the glossary do
> refer primarily to the working tree portion, except for one that
> said refs like HEAD and refs/bisect/* are per "working tree", but it
> is more precise to say they are per "worktree".
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
>
> * Mostly unchanged from the version in the original discussion
> https://lore.kernel.org/git/xmqqo83hatm1.fsf@gitster.g/ except
> that we now mention that pseudorefs are also per worktree.
>
> One thing that makes me worried somewhat is what I did not touch,
> namely, how pseudo refs are defined. I know MERGE_HEAD is very
> special and it may be impossible to coax it into refs API for
> writing, so the text there makes sense for it, but there are
> other all-caps-and-directly-under-dot-git-directory files like
> ORIG_HEAD and CHERRY_PICK_HEAD that are written using the refs
> API, so the description would have to be updated there.
I'm not quite following; why would the description need to be updated?
Sure MERGE_HEAD is written without using the refs API, but we didn't
mention how the pseduorefs were written in the description, and all of
MERGE_HEAD, CHERRY_PICK_HEAD, ORIG_HEAD, REVERT_HEAD get written
per-worktree so doesn't "pseudorefs like MERGE_HEAD" cover it as far
as the reader is concerned?
Show 40 quoted lines
> Documentation/glossary-content.txt | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/glossary-content.txt b/Documentation/glossary-content.txt
> index c077971335..9eb8920552 100644
> --- a/Documentation/glossary-content.txt
> +++ b/Documentation/glossary-content.txt
> @@ -312,7 +312,7 @@ Pathspecs are used on the command line of "git ls-files", "git
> ls-tree", "git add", "git grep", "git diff", "git checkout",
> and many other commands to
> limit the scope of operations to some subset of the tree or
> -worktree. See the documentation of each command for whether
> +working tree. See the documentation of each command for whether
> paths are relative to the current directory or toplevel. The
> pathspec syntax is as follows:
> +
> @@ -446,7 +446,7 @@ exclude;;
> interface than the <<def_plumbing,plumbing>>.
>
> [[def_per_worktree_ref]]per-worktree ref::
> - Refs that are per-<<def_working_tree,worktree>>, rather than
> + Refs that are per-<<def_worktree,worktree>>, rather than
> global. This is presently only <<def_HEAD,HEAD>> and any refs
> that start with `refs/bisect/`, but might later include other
> unusual refs.
> @@ -669,3 +669,12 @@ The most notable example is `HEAD`.
> The tree of actual checked out files. The working tree normally
> contains the contents of the <<def_HEAD,HEAD>> commit's tree,
> plus any local changes that you have made but not yet committed.
> +
> +[[def_work_tree]]worktree::
> + A repository can have zero (i.e. bare repository) or one or
> + more worktrees attached to it. One "worktree" consists of a
> + "working tree" and repository metadata, most of which are
> + shared among other worktrees of a single repository, and
> + some of which are maintained separately per worktree
> + (e.g. the index, HEAD and pseudorefs like MERGE_HEAD,
> + per-worktree refs and per-worktree configuration file).
> --
> 2.35.1-102-g2b9c120970
The text looks good to me.