Subject: Re: [PATCH] glossary: add "remote", "submodule", "superproject"

From: Junio C Hamano <[email-masked]>
Date: Thu, 28 May 2015 09:45:41 -0700

Stefan Beller <[email-masked]> writes:

> Noticed-by: Philip Oakley <[email-masked]>
> Helped-by: Junio C Hamano <[email-masked]>
> Signed-off-by: Stefan Beller <[email-masked]>
> ---
>  Documentation/glossary-content.txt | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)

The updates in this version relative to the previous one looks very
good, at least to me.  A bit more comments.

> diff --git a/Documentation/glossary-content.txt b/Documentation/glossary-content.txt
> index bf383c2..23ab692 100644
> --- a/Documentation/glossary-content.txt
> +++ b/Documentation/glossary-content.txt
> @@ -469,6 +469,11 @@ The most notable example is `HEAD`.
>  	<<def_push,push>> to describe the mapping between remote
>  	<<def_ref,ref>> and local ref.
>  
> +[[def_remote]]remote repository::
> +	A <<def_repository,repository>> which is used to track the same
> +	project but resides somewhere else. To communicate with remotes,
> +	see <<def_fetch,fetch>> or <<def_push,push>>.
> +

The last sentence sounds a tiny bit strange, in that I have to do a
bit more than just see the explanation of these commands in order to
communicate with remotes.

But it probably is just me.

> @@ -515,6 +520,18 @@ The most notable example is `HEAD`.
>  	is created by giving the `--depth` option to linkgit:git-clone[1], and
>  	its history can be later deepened with linkgit:git-fetch[1].
>  
> +[[def_submodule]]submodule::
> +	A <<def_repository,repository>> that holds the history of a
> +	separate project inside another repository (the latter of
> +	which is called <<def_superproject, superproject>>). The
> +	containing superproject knows about the names of (but does
> +	not hold copies of) commit objects of the contained submodules.

I agree with one point you mentioned in one of your messages, which
is that a submodule is not aware that it is used as part of a larger
project.  That makes me wonder if the last sentence sits better in
the description of the superproject, rather than the description of
the submodule.

> +[[def_superproject]]superproject::
> +	A <<def_repository,repository>> that references other repositories
> +	inside itself as <<def_submodule,submodules>>.

Perhaps "repositories of other projects"?  Does "inside" make it
clear enough that we are talking about the relationship between
working trees of the superproject and submodules?

> +	The superproject
> +	tracks only the remote and the name of the submodule.

I am not sure what this sentence means [*1*], and I do not know if
(a corrected version of) such a description is necessary here.

Thanks.

[Footnote]

*1* The superproject records a bit more than "remote and name" in
.gitmodules, and of course it records the history of the paths that
the submodule is bound to over time, with specific commits from the
submodule in its history.