All of lore.kernel.org
 help / color / mirror / Atom feed
From: Brandon Williams <bmwill@google.com>
To: Stefan Beller <sbeller@google.com>
Cc: Heiko Voigt <hvoigt@hvoigt.net>,
	"git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: [PATCH 6/6] submodule: refactor logic to determine changed submodules
Date: Mon, 1 May 2017 09:49:51 -0700	[thread overview]
Message-ID: <20170501164951.GD39135@google.com> (raw)
In-Reply-To: <CAGZ79kYqiSyxtpux77RSGx56Bzj3YA7Tu180=oFbPb1fMgEMkA@mail.gmail.com>

On 04/28, Stefan Beller wrote:
> + Heiko, who touched the pushing code end of last year.
> 
> On Fri, Apr 28, 2017 at 4:54 PM, Brandon Williams <bmwill@google.com> wrote:
> > There are currently two instances (fetch and push) where we want to
> > determine if submodules have changed given some revision specification.
> > These two instances don't use the same logic to generate a list of
> > changed submodules and as a result there is a fair amount of code
> > duplication.
> >
> > This patch refactors these two code paths such that they both use the
> > same logic to generate a list of changed submodules.  This also makes it
> > easier for future callers to be able to reuse this logic as they only
> > need to create an argv_array with the revision specification to be using
> > during the revision walk.
> 
> Thanks for doing some refactoring. :)
> 
> > -static struct oid_array *submodule_commits(struct string_list *submodules,
> > -                                           const char *path)
> > ...
> 
> > -static void free_submodules_oids(struct string_list *submodules)
> > -{
> > ...
> 
> These are just moved north, no change in code.
> If you want to be extra nice to reviewers this could have been an extra patch,
> as it makes reviewing easier if you just have to look at the lines of code with
> one goal ("shuffling code around, no change intended" vs "make a change
> to improve things with no bad side effects")

Yeah I suppose, I was having a difficult time breaking this largest
patch into multiple.

> 
> > +
> > +static void collect_changed_submodules_cb(struct diff_queue_struct *q,
> > +                                         struct diff_options *options,
> > +                                         void *data)
> > +{
> 
> This one combines both collect_submodules_from_diff and
> submodule_collect_changed_cb ?

Yep.

> 
> > @@ -921,61 +948,6 @@ int push_unpushed_submodules(struct oid_array *commits,
> >         return ret;
> >  }
> >
> > -static int is_submodule_commit_present(const char *path, unsigned char sha1[20])
> > -{
> > -       int is_present = 0;
> > -       if (!add_submodule_odb(path) && lookup_commit_reference(sha1)) {
> > -               /* Even if the submodule is checked out and the commit is
> > -                * present, make sure it is reachable from a ref. */
> > -               struct child_process cp = CHILD_PROCESS_INIT;
> > -               const char *argv[] = {"rev-list", "-n", "1", NULL, "--not", "--all", NULL};
> > -               struct strbuf buf = STRBUF_INIT;
> > -
> > -               argv[3] = sha1_to_hex(sha1);
> > -               cp.argv = argv;
> > -               prepare_submodule_repo_env(&cp.env_array);
> > -               cp.git_cmd = 1;
> > -               cp.no_stdin = 1;
> > -               cp.dir = path;
> > -               if (!capture_command(&cp, &buf, 1024) && !buf.len)
> > -                       is_present = 1;
> 
> Oh, I see where the nit in patch 5/6 is coming from. Another note
> on that: The hint is way off. The hint should be on the order of
> GIT_SHA1_HEXSZ

Yeah agreed.  I make this change in the earlier patch.

> 
> >  int find_unpushed_submodules(struct oid_array *commits,
> >                 const char *remotes_name, struct string_list *needs_pushing)
> > ...
> 
> >  static void calculate_changed_submodule_paths(void)
> > ...
> 
> These are both nicely clean now.
> 
> Thanks,
> Stefan

-- 
Brandon Williams

  reply	other threads:[~2017-05-01 16:51 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
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 [this message]
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

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

  git send-email \
    --in-reply-to=20170501164951.GD39135@google.com \
    --to=bmwill@google.com \
    --cc=git@vger.kernel.org \
    --cc=hvoigt@hvoigt.net \
    --cc=sbeller@google.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.