All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Antonio Ospite <ao2@ao2.it>
Cc: git@vger.kernel.org, "Brandon Williams" <bmwill@google.com>,
	"Daniel Graña" <dangra@gmail.com>,
	"Jonathan Nieder" <jrnieder@gmail.com>,
	"Richard Hartmann" <richih.mailinglist@gmail.com>,
	"Stefan Beller" <sbeller@google.com>
Subject: Re: [PATCH v4 1/9] submodule: add a print_config_from_gitmodules() helper
Date: Fri, 24 Aug 2018 16:32:38 +0200	[thread overview]
Message-ID: <87wosfesxl.fsf@evledraar.gmail.com> (raw)
In-Reply-To: <20180824132951.8000-2-ao2@ao2.it>


On Fri, Aug 24 2018, Antonio Ospite wrote:

> Add a new print_config_from_gitmodules() helper function to print values
> from .gitmodules just like "git config -f .gitmodules" would.
>
> This will be used by a new submodule--helper subcommand to be able to
> access the .gitmodules file in a more controlled way.
>
> Signed-off-by: Antonio Ospite <ao2@ao2.it>
> ---
>  submodule-config.c | 25 +++++++++++++++++++++++++
>  submodule-config.h |  2 ++
>  2 files changed, 27 insertions(+)
>
> diff --git a/submodule-config.c b/submodule-config.c
> index fc2c41b947..eef96c4198 100644
> --- a/submodule-config.c
> +++ b/submodule-config.c
> @@ -682,6 +682,31 @@ void submodule_free(struct repository *r)
>  		submodule_cache_clear(r->submodule_cache);
>  }
>
> +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;
> +}

No problem with the code itself, but I'd find this a lot easier to read
in context if it was:

    key_ -> var
    value_ -> value
    key -> wanted_key, perhaps?

I.e. the rest of the file uses the convention of the
config_from_gitmodules callbacks getting "var" and "value",
respectively.

We don't use this convention of suffixing variables with "_" if they're
arguments to the function anywhere else.

> +int print_config_from_gitmodules(const char *key)
> +{
> +	int ret;
> +	char *store_key;
> +
> +	ret = git_config_parse_key(key, &store_key, NULL);
> +	if (ret < 0)
> +		return CONFIG_INVALID_KEY;

Isn't this a memory leak? I.e. we should free() and return here, no?

> +	config_from_gitmodules(config_print_callback, the_repository, store_key);
> +
> +	free(store_key);
> +	return 0;
> +}
> +
>  struct fetch_config {
>  	int *max_children;
>  	int *recurse_submodules;
> diff --git a/submodule-config.h b/submodule-config.h
> index dc7278eea4..ed40e9a478 100644
> --- a/submodule-config.h
> +++ b/submodule-config.h
> @@ -56,6 +56,8 @@ void submodule_free(struct repository *r);
>   */
>  int check_submodule_name(const char *name);
>
> +int print_config_from_gitmodules(const char *key);
> +
>  /*
>   * Note: these helper functions exist solely to maintain backward
>   * compatibility with 'fetch' and 'update_clone' storing configuration in

Another style nit: Makes more sense to put this new function right
underneath "submodule_free" above, instead of under 1/2 of the functions
that have a big comment describing how they work, since that comment
doesn't apply to this new function.

  reply	other threads:[~2018-08-24 14:32 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-24 13:29 [PATCH v4 0/9] Make submodules work if .gitmodules is not checked out Antonio Ospite
2018-08-24 13:29 ` [PATCH v4 1/9] submodule: add a print_config_from_gitmodules() helper Antonio Ospite
2018-08-24 14:32   ` Ævar Arnfjörð Bjarmason [this message]
2018-08-24 16:52     ` Antonio Ospite
2018-09-04  7:10       ` Antonio Ospite
2018-08-24 13:29 ` [PATCH v4 2/9] submodule: factor out a config_set_in_gitmodules_file_gently function Antonio Ospite
2018-08-24 13:29 ` [PATCH v4 3/9] t7411: merge tests 5 and 6 Antonio Ospite
2018-08-24 13:29 ` [PATCH v4 4/9] t7411: be nicer to future tests and really clean things up Antonio Ospite
2018-08-24 13:29 ` [PATCH v4 5/9] submodule--helper: add a new 'config' subcommand Antonio Ospite
2018-08-24 13:29 ` [PATCH v4 6/9] submodule: use the 'submodule--helper config' command Antonio Ospite
2018-08-24 13:29 ` [PATCH v4 7/9] t7506: clean up .gitmodules properly before setting up new scenario Antonio Ospite
2018-08-24 13:29 ` [PATCH v4 8/9] submodule: add a helper to check if it is safe to write to .gitmodules Antonio Ospite
2018-08-24 13:29 ` [PATCH v4 9/9] submodule: support reading .gitmodules when it's not in the working tree Antonio Ospite
2018-08-24 14:38 ` [PATCH v4 0/9] Make submodules work if .gitmodules is not checked out Ævar Arnfjörð Bjarmason

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=87wosfesxl.fsf@evledraar.gmail.com \
    --to=avarab@gmail.com \
    --cc=ao2@ao2.it \
    --cc=bmwill@google.com \
    --cc=dangra@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=jrnieder@gmail.com \
    --cc=richih.mailinglist@gmail.com \
    --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.