git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Stefan Beller <sbeller@google.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: "git@vger.kernel.org" <git@vger.kernel.org>,
	mst@redhat.com, Jens Lehmann <Jens.Lehmann@web.de>
Subject: Re: [PATCH 5/6] submodule update: add super-reference flag
Date: Fri, 5 Aug 2016 17:22:01 -0700	[thread overview]
Message-ID: <CAGZ79kYsdqffWykzcEQcd2HigYqVNt0Y1H0Biw3QA2RdQaMOOw@mail.gmail.com> (raw)
In-Reply-To: <xmqq1t22x6fj.fsf@gitster.mtv.corp.google.com>

On Fri, Aug 5, 2016 at 2:16 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Stefan Beller <sbeller@google.com> writes:
>
>> Signed-off-by: Stefan Beller <sbeller@google.com>
>> ---
>
> That's a bit sketchy description.  From the title, I expected that
> we would see one additional 'unsigned super_reference : 1;' field in
> some structure, but that is not what is happening.  The log message
> needs to describe what these string list are and why they are needed
> a bit better.

A "--super-reference" allows giving a reference to a superproject instead
of a direct reference.

With --reference you had to point to the direct repository, e.g.

    git clone --reference /usr/share/foo git://xyxxz.example/foo

assumed that /usr/share/foo is either the working dir or the git dir
of said project.

When giving references in the submodule context (this part of the helper
is called from "git submodule update", which itself is called from
"git clone --recursive"  we do not know the place where the submodule
reference is living. As we do know where the superproject reference is
living (i.e. "git clone --recursive --reference <superproject>"),
we can construct one possible path where the submodules are located
at <superproject>/<submodule-path>. To differentiate the reference flag
from a direct reference this will be called "--super-reference" as it
references a super project.

The next patch makes use of it by just passing on the --reference
given to "git clone" as --super-reference to the "submodule update"
procedure, which then uses the code in this patch.

>
> At least, please don't name a multiple_word field "multipleword" ;-)

uh :( OK.

>
>> @@ -715,6 +716,15 @@ static int prepare_to_clone_next_submodule(const struct cache_entry *ce,
>>               for_each_string_list_item(item, &suc->references)
>>                       argv_array_pushl(&child->args, "--reference", item->string, NULL);
>>       }
>> +     if (suc->superreferences.nr) {
>> +             struct string_list_item *item;
>> +             for_each_string_list_item(item, &suc->superreferences) {
>> +                     strbuf_reset(&sb);
>> +                     argv_array_pushf(&child->args, "--reference=%s/%s",
>> +                                      relative_path(item->string, suc->prefix, &sb),
>> +                                      sub->path);
>
> The phrase "super reference" made me imagine it is some kind of
> "reference" that is applicable to the superproject,

Oh I see. Except that from the superprojects point of view, it is not a
superproject; it is just a project with submodules. From a submodules point
of view you have a superproject however, so a super-reference is a reference
that points to another superproject, so we can find a sibling reference.

> but this code
> smells like it is a "prefix to create reference suited for use in
> submodule".

Yeah that's it.

> Whatever it is, it should be explained better (than "no
> desciption" which is what we have here ;-), and given a name that
> match the explanation.
>
> Thanks.

OK.

Thanks,
Stefan

  reply	other threads:[~2016-08-06 21:49 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-04 19:51 [PATCH 0/6] git clone: Marry --recursive and --reference Stefan Beller
2016-08-04 19:51 ` [PATCH 1/6] t7408: modernize style Stefan Beller
2016-08-05 20:30   ` Junio C Hamano
2016-08-04 19:51 ` [PATCH 2/6] t7408: merge short tests, factor out testing method Stefan Beller
2016-08-05 20:45   ` Junio C Hamano
2016-08-05 22:45     ` Stefan Beller
2016-08-05 23:09       ` Junio C Hamano
2016-08-04 19:51 ` [PATCH 3/6] submodule--helper module-clone: allow multiple references Stefan Beller
2016-08-05 20:54   ` Junio C Hamano
2016-08-04 19:51 ` [PATCH 4/6] submodule--helper update-clone: " Stefan Beller
2016-08-05 19:08   ` Stefan Beller
2016-08-05 21:06     ` Junio C Hamano
2016-08-05 21:19       ` Stefan Beller
2016-08-05 21:31         ` Junio C Hamano
2016-08-05 21:33           ` Stefan Beller
2016-08-04 19:51 ` [PATCH 5/6] submodule update: add super-reference flag Stefan Beller
2016-08-05 21:16   ` Junio C Hamano
2016-08-06  0:22     ` Stefan Beller [this message]
2016-08-04 19:51 ` [PATCH 6/6] clone: reference flag is used for submodules as well Stefan Beller
2016-08-05 21:36   ` Junio C Hamano
2016-08-05 19:47 ` [PATCH 0/6] git clone: Marry --recursive and --reference Junio C Hamano
2016-08-05 21:23   ` Stefan Beller
2016-08-05 21:47     ` Junio C Hamano
2016-08-05 23:26 ` Rename detection within in files WAS: [PATCH 2/6] t7408: merge short tests, factor out testing method Stefan Beller
2016-08-07  9:24   ` René Scharfe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAGZ79kYsdqffWykzcEQcd2HigYqVNt0Y1H0Biw3QA2RdQaMOOw@mail.gmail.com \
    --to=sbeller@google.com \
    --cc=Jens.Lehmann@web.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=mst@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).