All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Lehmann <Jens.Lehmann@web.de>
To: Junio C Hamano <gitster@pobox.com>
Cc: Git Mailing List <git@vger.kernel.org>,
	Marc Branchaud <marcnarc@xiplink.com>,
	Kevin Ballard <kevin@sb.org>,
	Jonathan Nieder <jrnieder@gmail.com>,
	Heiko Voigt <hvoigt@hvoigt.net>
Subject: Re: [PATCH 1/6] fetch/pull: recurse into submodules when necessary
Date: Thu, 24 Feb 2011 00:28:24 +0100	[thread overview]
Message-ID: <4D659818.4070107@web.de> (raw)
In-Reply-To: <7vipwa5phh.fsf@alter.siamese.dyndns.org>

Am 23.02.2011 23:56, schrieb Junio C Hamano:
> Jens Lehmann <Jens.Lehmann@web.de> writes:
> 
>> diff --git a/submodule.c b/submodule.c
>> index 6f1c107..c8c3a99 100644
>> --- a/submodule.c
>> +++ b/submodule.c
>> @@ -152,6 +153,20 @@ void handle_ignore_submodules_arg(struct diff_options *diffopt,
>> ...
>> +int parse_fetch_recurse_submodules_arg(const char *arg)
>> +{
>> +	switch (git_config_maybe_bool("", arg)) {
> 
> It's a bit unusual to see "" as the variable name; doesn't config-maybe-bool
> barf when arg is not what it likes, with the name as part of its message?

git_config_*maybe*_bool() itself calls git_config_maybe_bool_text() and
git_parse_long() which all don't die() on anything (while git_config_bool()
can do that in git_config_int() via git_config_bool_or_int()). But you are
right, using something more descriptive than "" is much better here.

>> @@ -248,11 +263,73 @@ void set_config_fetch_recurse_submodules(int value)
>> ...
>> +static void submodule_collect_changed_cb(struct diff_queue_struct *q,
>> +					 struct diff_options *options,
>> +					 void *data)
>> +{
>> +	int i;
>> +	for (i = 0; i < q->nr; i++) {
>> +		struct diff_filepair *p = q->queue[i];
>> +		if (!S_ISGITLINK(p->two->mode))
>> +			continue;
>> +
>> +		if (S_ISGITLINK(p->one->mode)) {
>> +			/* NEEDSWORK: We should honor the name configured in
>> +			 * the .gitmodules file of the commit we are examining
>> +			 * here to be able to correctly follow submodules
>> +			 * being moved around. */
>> +			struct string_list_item *path;
>> +			path = unsorted_string_list_lookup(&changed_submodule_paths, p->two->path);
>> +			if (!path)
>> +				string_list_append(&changed_submodule_paths, xstrdup(p->two->path));
> 
> I wondered why there is no mention of "data" in the implementation of this
> function; changed_submodule_paths global is used instead here.
> 
> I do not see anywhere the global string_list is initialized, freed, nor
> re-initialized for reuse.  Are you guaranteeing that the caller only calls
> the check_for_new_submodule_commits() function once, and if so how?  The
> function is called from update_local_ref() in builtin/fetch.c, which in
> turn gets called number of times during a fetch.  IOW, does the code do
> the right thing when you are fetching more than one refs?

I assume that a string_list initialized with 0 is initialized properly.
The idea is to let check_for_new_submodule_commits() be called as often
as needed and for each ref to collect all submodule changes recorded in
any ref and afterwards only once call fetch_populated_submodules() to
collect all submodules touched by any commits on any ref. But maybe
fetch_populated_submodules() should empty the string_list it just
worked through?

  reply	other threads:[~2011-02-23 23:29 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-23 20:33 [PATCH 0/6] Teach fetch/pull the on-demand mode and make it the default Jens Lehmann
2011-02-23 20:34 ` [PATCH 1/6] fetch/pull: recurse into submodules when necessary Jens Lehmann
2011-02-23 22:56   ` Junio C Hamano
2011-02-23 23:28     ` Jens Lehmann [this message]
2011-02-24  0:22       ` Jonathan Nieder
2011-02-23 23:07   ` Jonathan Nieder
2011-02-23 23:43     ` Jens Lehmann
2011-02-23 23:58       ` Jonathan Nieder
2011-02-23 20:35 ` [PATCH 2/6] fetch/pull: Add the 'on-demand' value to the --recurse-submodules option Jens Lehmann
2011-02-23 23:12   ` Jonathan Nieder
2011-02-23 23:14     ` Jonathan Nieder
2011-02-23 20:35 ` [PATCH 3/6] config: teach the fetch.recurseSubmodules option the 'on-demand' value Jens Lehmann
2011-02-23 20:36 ` [PATCH 4/6] Submodules: Add 'on-demand' value for the 'fetchRecurseSubmodule' option Jens Lehmann
2011-02-23 23:16   ` Junio C Hamano
2011-02-24 20:44     ` Jens Lehmann
2011-02-23 20:36 ` [PATCH 5/6] fetch/pull: Don't recurse into a submodule when commits are already present Jens Lehmann
2011-02-23 23:21   ` Junio C Hamano
2011-02-23 23:50     ` Jens Lehmann
2011-02-24  8:20       ` Jens Lehmann
2011-02-23 20:36 ` [PATCH 6/6] submodule update: Don't fetch when the submodule commit is " Jens Lehmann
2011-02-23 23:23   ` Junio C Hamano
2011-02-23 23:21 ` [PATCH 0/6] Teach fetch/pull the on-demand mode and make it the default Jonathan Nieder
2011-02-23 23:48   ` Jens Lehmann

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

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

  git send-email \
    --in-reply-to=4D659818.4070107@web.de \
    --to=jens.lehmann@web.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=hvoigt@hvoigt.net \
    --cc=jrnieder@gmail.com \
    --cc=kevin@sb.org \
    --cc=marcnarc@xiplink.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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.