git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Stefan Beller <sbeller@google.com>
To: Brandon Williams <bmwill@google.com>, Heiko Voigt <hvoigt@hvoigt.net>
Cc: "git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: [PATCH 6/6] submodule: refactor logic to determine changed submodules
Date: Fri, 28 Apr 2017 17:53:46 -0700	[thread overview]
Message-ID: <CAGZ79kYqiSyxtpux77RSGx56Bzj3YA7Tu180=oFbPb1fMgEMkA@mail.gmail.com> (raw)
In-Reply-To: <20170428235402.162251-7-bmwill@google.com>

+ 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")



> +
> +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 ?

> @@ -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

>  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

  reply	other threads:[~2017-04-29  0:53 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 [this message]
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='CAGZ79kYqiSyxtpux77RSGx56Bzj3YA7Tu180=oFbPb1fMgEMkA@mail.gmail.com' \
    --to=sbeller@google.com \
    --cc=bmwill@google.com \
    --cc=git@vger.kernel.org \
    --cc=hvoigt@hvoigt.net \
    /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).