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

Re: [RFC PATCH 04/10] submodule--helper: add a new 'config' subcommand

From
Antonio Ospite <ao2@ao2.it>
Date
Jun 20, 2018, 21:32 UTC
Message-ID
<20180620233239.dce00f3d9400b674f95adad7@ao2.it>
In-Reply-To
<CAGZ79kbkDO8KEm6ps75xTykU2JCVwHVVpOr+Eq_RQy_bn-jRCw@mail.gmail.com>

On Mon, 14 May 2018 18:33:44 -0700 Stefan Beller <sbeller@google.com> wrote:

Show 86 quoted lines
> On Mon, May 14, 2018 at 3:58 AM, Antonio Ospite <ao2@ao2.it> wrote:
> > Add a new 'config' subcommand to 'submodule--helper', this extra level
> > of indirection makes it possible to add some flexibility to how the
> > submodules configuration is handled.
> >
> > Signed-off-by: Antonio Ospite <ao2@ao2.it>
> > ---
> >  builtin/submodule--helper.c | 39 +++++++++++++++++++++++++++++++++++++
> >  t/t7411-submodule-config.sh | 26 +++++++++++++++++++++++++
> >  2 files changed, 65 insertions(+)
> >
> > diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
> > index 9e8f2acd5..b32110e3b 100644
> > --- a/builtin/submodule--helper.c
> > +++ b/builtin/submodule--helper.c
> > @@ -1825,6 +1825,44 @@ static int is_active(int argc, const char **argv, const char *prefix)
> >         return !is_submodule_active(the_repository, argv[1]);
> >  }
> >
> > +static int config_print_callback(const char *key_, const char *value_, void *cb_data)
> > +{
> > +       char *key = cb_data;
> > +
> > +       if (!strcmp(key, key_))
> > +               printf("%s\n", value_);
> > +
> > +       return 0;
> > +}
> > +
> > +static int module_config(int argc, const char **argv, const char *prefix)
> > +{
> > +       int ret;
> > +
> > +       if (argc < 2 || argc > 3)
> > +               die("submodule--helper config takes 1 or 2 arguments: name [value]");
> > +
> > +       /* Equivalent to ACTION_GET in builtin/config.c */
> > +       if (argc == 2) {
> > +               char *key;
> > +
> > +               ret = git_config_parse_key(argv[1], &key, NULL);
> > +               if (ret < 0)
> > +                       return CONFIG_INVALID_KEY;
> > +
> > +               config_from_gitmodules(config_print_callback, the_repository, key);
> > +
> > +               free(key);
> > +               return 0;
> > +       }
> > +
> > +       /* Equivalent to ACTION_SET in builtin/config.c */
> > +       if (argc == 3)
> > +               return config_gitmodules_set(argv[1], argv[2]);
> 
> Ah, here we definitely want to set it in the .gitmodules file?
> (Or does that change later in this series?)
> 
> > +
> > +       return 0;
> > +}
> > +
> >  #define SUPPORT_SUPER_PREFIX (1<<0)
> >
> >  struct cmd_struct {
> > @@ -1850,6 +1888,7 @@ static struct cmd_struct commands[] = {
> >         {"push-check", push_check, 0},
> >         {"absorb-git-dirs", absorb_git_dirs, SUPPORT_SUPER_PREFIX},
> >         {"is-active", is_active, 0},
> > +       {"config", module_config, 0},
> >  };
> >
> >  int cmd_submodule__helper(int argc, const char **argv, const char *prefix)
> > diff --git a/t/t7411-submodule-config.sh b/t/t7411-submodule-config.sh
> > index a648de6a9..dfe019f05 100755
> > --- a/t/t7411-submodule-config.sh
> > +++ b/t/t7411-submodule-config.sh
> > @@ -139,4 +139,30 @@ test_expect_success 'error in history in fetchrecursesubmodule lets continue' '
> >         )
> >  '
> >
> > +test_expect_success 'reading submodules config with "submodule--helper config"' '
> > +       (cd super &&
> 
> I think the project prefers a style
> of the cd at the same level of the echo and the following commands.
>

There is mixed style about that, so for new tests in existing files I'd stick to the predominant style in the file.

For new test files I'll use the recommended style of cd on the same level of the following commands.

Show 10 quoted lines
> However we might not need the (cd super && ...) via
> 
>   echo "../submodule"  >expected
>   git -C super ubmodule--helper config submodule.submodule.url >../actual
>   test_cmp expected actual
> 
> Our friends developing git on Windows will thank us for saving
> to spawn a shell as spawning processes is expensive on Windows. :)
> Also we have fewer lines of code.
>
I'll see how that looks, thanks for the suggestion.

Again, I'd use a subshell if that's what the other tests in a file do, and use "git -C" in new files.

Thanks,
   Antonio
-- 
Antonio Ospite
https://ao2.it
https://twitter.com/ao2it

A: Because it messes up the order in which people normally read text.
   See http://en.wikipedia.org/wiki/Posting_style
Q: Why is top-posting such a bad thing?
Previous: Stefan BellerNext: Antonio Ospite
Message 10 of 27 in “Make submodules work if .gitmodules is not checked out”
  1. 00/10 Make submodules work if .gitmodules is not checked outAntonio Ospite, May 14, 2018
  2. 03/10 t7411: be nicer to other tests and really clean things upAntonio Ospite, May 14, 2018
  3. Stefan BellerMay 15, 2018
  4. Antonio OspiteJun 20, 2018
  5. 02/10 submodule: factor out a config_gitmodules_set functionAntonio Ospite, May 14, 2018
  6. Stefan BellerMay 15, 2018
  7. Antonio OspiteJun 20, 2018
  8. 04/10 submodule--helper: add a new 'config' subcommandAntonio Ospite, May 14, 2018
  9. Stefan BellerMay 15, 2018
  10. Antonio OspiteJun 20, 2018
  11. 01/10 config: make config_from_gitmodules generally usefulAntonio Ospite, May 14, 2018
  12. Brandon WilliamsMay 14, 2018
  13. Antonio OspiteJun 20, 2018
  14. Stefan BellerMay 15, 2018
  15. Antonio OspiteJun 20, 2018
  16. Stefan BellerJun 20, 2018
  17. Antonio OspiteJun 21, 2018
  18. Stefan BellerJun 21, 2018
  19. 05/10 submodule: use the 'submodule--helper config' commandAntonio Ospite, May 14, 2018
  20. 06/10 submodule--helper: add a '--stage' option to the 'config' sub commandAntonio Ospite, May 14, 2018
  21. 07/10 submodule: use 'submodule--helper config --stage' to stage .gitmodulesAntonio Ospite, May 14, 2018
  22. 08/10 t7506: cleanup .gitmodules properly before setting up new scenarioAntonio Ospite, May 14, 2018
  23. 10/10 t7415: add new test about using HEAD:.gitmodules from the indexAntonio Ospite, May 14, 2018
  24. 09/10 submodule: support reading .gitmodules even when it's not checked outAntonio Ospite, May 14, 2018
  25. Stefan BellerMay 15, 2018
  26. Stefan BellerMay 15, 2018
  27. Junio C HamanoMay 15, 2018

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.