Thread (26 messages) flat view 26 messages, 3 authors, 2018-06-21

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

From: Antonio Ospite <hidden>
Date: 2018-06-20 21:32:45

On Mon, 14 May 2018 18:33:44 -0700
Stefan Beller [off-list ref] wrote:
On Mon, May 14, 2018 at 3:58 AM, Antonio Ospite [off-list ref] wrote:
quoted
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 <redacted>
---
 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?)
quoted
+
+       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.
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?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help