git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Brandon Williams <bmwill@google.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 4/6] submodule: change string_list changed_submodule_paths
Date: Mon, 1 May 2017 09:35:36 -0700	[thread overview]
Message-ID: <20170501163536.GB39135@google.com> (raw)
In-Reply-To: <xmqqr309gss1.fsf@gitster.mtv.corp.google.com>

On 04/30, Junio C Hamano wrote:
> Brandon Williams <bmwill@google.com> writes:
> 
> > Eliminate a call to 'xstrdup()' by changing the string_list
> > 'changed_submodule_paths' to duplicated strings added to it.
> >
> > Signed-off-by: Brandon Williams <bmwill@google.com>
> > ---
> >  submodule.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/submodule.c b/submodule.c
> > index 7baa28ae0..3bcf44521 100644
> > --- a/submodule.c
> > +++ b/submodule.c
> > @@ -20,7 +20,7 @@
> >  static int config_fetch_recurse_submodules = RECURSE_SUBMODULES_ON_DEMAND;
> >  static int config_update_recurse_submodules = RECURSE_SUBMODULES_DEFAULT;
> >  static int parallel_jobs = 1;
> > -static struct string_list changed_submodule_paths = STRING_LIST_INIT_NODUP;
> > +static struct string_list changed_submodule_paths = STRING_LIST_INIT_DUP;
> >  static int initialized_fetch_ref_tips;
> >  static struct oid_array ref_tips_before_fetch;
> >  static struct oid_array ref_tips_after_fetch;
> > @@ -939,7 +939,7 @@ static void submodule_collect_changed_cb(struct diff_queue_struct *q,
> >  			struct string_list_item *path;
> >  			path = unsorted_string_list_lookup(&changed_submodule_paths, p->two->path);
> >  			if (!path && !is_submodule_commit_present(p->two->path, p->two->oid.hash))
> > -				string_list_append(&changed_submodule_paths, xstrdup(p->two->path));
> > +				string_list_append(&changed_submodule_paths, p->two->path);
> 
> I notice that "path" is not used at all, and other users of this
> string list do not even bother using a variable, i.e.
> 
> 	if (!unsorted_string_list_lookup(&changed_submodule_paths, ...))
> 
> In fact, it might be even better to use a hashmap for this instead?
> 
> The call to string_list_clear() onthis list tells it to free the
> util field, and I went to see what we are storing in the util field,
> but it seems that it is freeing NULLs, which is somewhat misleading
> and time-wasting on the code readers.  Using hashmap may also clear
> this up.
> 
> But all of the above are not within the scope of this topic ;-)

All good good points which hopefully are resolved in a later patch.  This
patch exists mainly to factor out the change to make the string_list
duplicate the strings added to it as opposed to have that change seem
random and out of place in a later patch.

Most of this logic itself is removed entirely later once it is unified
with the other code path which checked for changed submodules.  This may
be out of context on this particular patch, but eventually an oid_array
is stored in the 'util' field of the string list items.  This oid_array
holds all of the changes to the submodule pointers.  This allows us to
then batch check for the existence of all the submodule commits instead
of checking each change individually (which is what this code path
currently does).

-- 
Brandon Williams

  reply	other threads:[~2017-05-01 16:35 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-28 23:53 [PATCH 0/6] changed submodules Brandon Williams
2017-04-28 23:53 ` [PATCH 1/6] submodule: rename add_sha1_to_array Brandon Williams
2017-05-01  3:18   ` Junio C Hamano
2017-04-28 23:53 ` [PATCH 2/6] submodule: rename free_submodules_sha1s Brandon Williams
2017-04-28 23:53 ` [PATCH 3/6] submodule: remove add_oid_to_argv Brandon Williams
2017-04-28 23:54 ` [PATCH 4/6] submodule: change string_list changed_submodule_paths Brandon Williams
2017-05-01  3:28   ` Junio C Hamano
2017-05-01 16:35     ` Brandon Williams [this message]
2017-04-28 23:54 ` [PATCH 5/6] submodule: improve submodule_has_commits Brandon Williams
2017-04-29  0:28   ` Stefan Beller
2017-04-30 23:14     ` Brandon Williams
2017-05-01 16:52       ` Stefan Beller
2017-05-01 16:55         ` Brandon Williams
2017-05-01  3:37   ` Junio C Hamano
2017-05-01 16:46     ` Brandon Williams
2017-04-28 23:54 ` [PATCH 6/6] submodule: refactor logic to determine changed submodules Brandon Williams
2017-04-29  0:53   ` Stefan Beller
2017-05-01 16:49     ` Brandon Williams
2017-05-01  1:42 ` [PATCH 0/6] " Junio C Hamano
2017-05-02  1:02 ` [PATCH v2 " Brandon Williams
2017-05-02  1:02   ` [PATCH v2 1/6] submodule: rename add_sha1_to_array Brandon Williams
2017-05-02  1:05     ` Stefan Beller
2017-05-02  1:09       ` Brandon Williams
2017-05-02  1:02   ` [PATCH v2 2/6] submodule: rename free_submodules_sha1s Brandon Williams
2017-05-02  1:02   ` [PATCH v2 3/6] submodule: remove add_oid_to_argv Brandon Williams
2017-05-02  1:02   ` [PATCH v2 4/6] submodule: change string_list changed_submodule_paths Brandon Williams
2017-05-02  1:02   ` [PATCH v2 5/6] submodule: improve submodule_has_commits Brandon Williams
2017-05-02  1:34     ` Stefan Beller
2017-05-02 17:25       ` Brandon Williams
2017-05-02 17:55         ` Stefan Beller
2017-05-02 19:14           ` Brandon Williams
2017-05-02 19:30             ` Brandon Williams
2017-05-02  1:02   ` [PATCH v2 6/6] submodule: refactor logic to determine changed submodules Brandon Williams

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=20170501163536.GB39135@google.com \
    --to=bmwill@google.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.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).