git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCHv5 4/8] submodule--helper update-clone: allow multiple references

From
Jacob Keller <jacob.keller@gmail.com>
Date
Aug 23, 2016, 22:20 UTC
Message-ID
<CA+P7+xq9_kx7d5NMk2QxwZRQn8o6qgkJq5ryZL2FVrHaUmqKQQ@mail.gmail.com>
In-Reply-To
<20160815215327.15682-5-sbeller@google.com>
On Mon, Aug 15, 2016 at 2:53 PM, Stefan Beller <sbeller@google.com> wrote:
Show 18 quoted lines
> Allow the user to pass in multiple references to update_clone.
> Currently this is only internal API, but once the shell script is
> replaced by a C version, this is needed.
>
> This fixes an API bug between the shell script and the helper.
> Currently the helper accepts "--reference" "--reference=foo"
> as a OPT_STRING whose value happens to be "--reference=foo", and
> then uses
>
>         if (suc->reference)
>                 argv_array_push(&child->args, suc->reference)
>
> where suc->reference _is_ "--reference=foo" when invoking the
> underlying "git clone", it cancels out.
>
> With this change we omit one of the "--reference" arguments when
> passing references from the shell script to the helper.
>

Yep, I see the API fix, and it looks correct. Makes use of the helper easier and more likely to be done correctly.

Show 35 quoted lines
> Signed-off-by: Stefan Beller <sbeller@google.com>
> ---
>  builtin/submodule--helper.c | 14 +++++++++-----
>  git-submodule.sh            |  2 +-
>  2 files changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
> index ce9b3e9..7096848 100644
> --- a/builtin/submodule--helper.c
> +++ b/builtin/submodule--helper.c
> @@ -584,7 +584,7 @@ struct submodule_update_clone {
>         /* configuration parameters which are passed on to the children */
>         int quiet;
>         int recommend_shallow;
> -       const char *reference;
> +       struct string_list references;
>         const char *depth;
>         const char *recursive_prefix;
>         const char *prefix;
> @@ -600,7 +600,8 @@ struct submodule_update_clone {
>         int failed_clones_nr, failed_clones_alloc;
>  };
>  #define SUBMODULE_UPDATE_CLONE_INIT {0, MODULE_LIST_INIT, 0, \
> -       SUBMODULE_UPDATE_STRATEGY_INIT, 0, -1, NULL, NULL, NULL, NULL, \
> +       SUBMODULE_UPDATE_STRATEGY_INIT, 0, -1, STRING_LIST_INIT_DUP, \
> +       NULL, NULL, NULL, \
>         STRING_LIST_INIT_DUP, 0, NULL, 0, 0}
>
>
> @@ -710,8 +711,11 @@ static int prepare_to_clone_next_submodule(const struct cache_entry *ce,
>         argv_array_pushl(&child->args, "--path", sub->path, NULL);
>         argv_array_pushl(&child->args, "--name", sub->name, NULL);
>         argv_array_pushl(&child->args, "--url", url, NULL);
> -       if (suc->reference)
> -               argv_array_push(&child->args, suc->reference);

Here, you now no longer pass in the reference as a whole, but assume that it is actually just the value to pass to --reference. And below you correctly replace the extra --reference. Ok so I see how you fixed the API bug.

Show 10 quoted lines
> diff --git a/git-submodule.sh b/git-submodule.sh
> index c90dc33..3b412f5 100755
> --- a/git-submodule.sh
> +++ b/git-submodule.sh
> @@ -575,7 +575,7 @@ cmd_update()
>                 ${wt_prefix:+--prefix "$wt_prefix"} \
>                 ${prefix:+--recursive-prefix "$prefix"} \
>                 ${update:+--update "$update"} \
> -               ${reference:+--reference "$reference"} \
> +               ${reference:+"$reference"} \

From above, I see how you fixed this to assume (as above) that $reference is "--reference <value>" and pass it directly. It worked before but was definitely a bit "brittle" in that direct calling of the helper function would not behave as expected. Nice!

Regards, Jake

Previous: Stefan BellerNext: Stefan Beller
Message 7 of 24 in “[PATCHv5 0/8] git clone: Marry --recursive and --reference”
  1. Stefan BellerAug 15, 2016
  2. 1/8 t7408: modernize styleStefan Beller, Aug 15, 2016
  3. Jacob KellerAug 23, 2016
  4. 2/8 t7408: merge short tests, factor out testing methodStefan Beller, Aug 15, 2016
  5. Jacob KellerAug 23, 2016
  6. 4/8 submodule--helper update-clone: allow multiple referencesStefan Beller, Aug 15, 2016
  7. Jacob KellerAug 23, 2016
  8. 5/8 clone: factor out checking for an alternate pathStefan Beller, Aug 15, 2016
  9. Jacob KellerAug 23, 2016
  10. 6/8 clone: clarify option_reference as requiredStefan Beller, Aug 15, 2016
  11. Jacob KellerAug 23, 2016
  12. 3/8 submodule--helper module-clone: allow multiple referencesStefan Beller, Aug 15, 2016
  13. Jacob KellerAug 23, 2016
  14. 7/8 clone: implement optional referencesStefan Beller, Aug 15, 2016
  15. Jacob KellerAug 23, 2016
  16. 8/8 clone: recursive and reference option triggers submodule alternatesStefan Beller, Aug 15, 2016
  17. Jacob KellerAug 23, 2016
  18. Stefan BellerAug 23, 2016
  19. Jacob KellerAug 24, 2016
  20. Stefan BellerAug 24, 2016
  21. Jacob KellerAug 24, 2016
  22. Stefan BellerAug 31, 2016
  23. Jacob KellerAug 31, 2016
  24. Junio C HamanoAug 15, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.