From: Felipe Contreras <felipe.contreras@gmail.com>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: git@vger.kernel.org
Subject: Re: [PATCH v2] config: Use parseopt.
Date: Sat, 14 Feb 2009 22:31:09 +0200 [thread overview]
Message-ID: <94a0d4530902141231t143067e5n872558a4e515be4a@mail.gmail.com> (raw)
In-Reply-To: <alpine.DEB.1.00.0902142041370.10279@pacific.mpi-cbg.de>
On Sat, Feb 14, 2009 at 9:59 PM, Johannes Schindelin
<Johannes.Schindelin@gmx.de> wrote:
> Hi,
>
> On Sat, 14 Feb 2009, Felipe Contreras wrote:
>
>> @@ -231,7 +264,7 @@ static int get_diff_color_found;
>> static int git_get_colorbool_config(const char *var, const char *value,
>> void *cb)
>> {
>> - if (!strcmp(var, get_color_slot)) {
>> + if (!strcmp(var, get_colorbool_slot)) {
>> get_colorbool_found =
>> git_config_colorbool(var, value, stdout_is_tty);
>> }
>
> Name changes like this make it harder to read the patch; can you separate
> that change out into its own patch?
In that case I couldn't use OPT_STRING to store that value; I would
have to change --get-color* to use OPT_BOOLEAN or OPT_SET_INT and
store check the argc (since OPT_STRING isn't doing that anymore) and
save argv[1] to get_color_slot,
>> + if (use_global_config) {
>> + char *home = getenv("HOME");
>> + if (home) {
>> + char *user_config = xstrdup(mkpath("%s/.gitconfig", home));
>> + config_exclusive_filename = user_config;
>
> In a subsequent patch, you might add a check only one of --global,
> --system or --file was given.
Yeap.
>> + else if (given_config_file) {
>> + if (!is_absolute_path(given_config_file) && file)
>> + file = prefix_filename(file, strlen(file),
>> + given_config_file);
>> + else
>> + file = given_config_file;
>> + config_exclusive_filename = file;
>
> It took me a considerable amount of time to figure out that "file" is
> actually the "prefix"! That cleanup would be nice to have before the
> parseopt patch, methinks, especially since the code is reindented, and
> thus hard to follow in the diff.
True.
I tried to minimize changes, so that code is exactly the same as
before (except vi didn't preserve the indent).
>> + if (actions & ACTION_LIST) {
>> + if (git_config(show_all_config, NULL) < 0 &&
>> + file && errno)
>
> Should this not be config_exclusive_filename?
Looks like that.
>> + die("unable to read config file %s: %s", file,
>> + strerror(errno));
>
> Do we really only want to die() in case we know the file name? AFAICT at
> this point we have no idea in which of the possibly three files the error
> occurred. And there need not be any errno set, for example when there was
> a parse error.
Yes, there should be an error even if 'file' is not set. But if the
file is set what's wrong with that die command?
>> + else if (actions & ACTION_EDIT) {
>> + const char *config_filename;
>> + if (config_exclusive_filename)
>> + config_filename = config_exclusive_filename;
>> + else
>> + config_filename = git_path("config");
>
> Why not reuse config_exclusive_filename here?
You mean:
if (!config_exclusive_filename)
config_exclusive_filename = git_path("config");
>> + else if (actions & ACTION_ADD) {
>> + check_argc(argc, 2, 2);
>
> BTW what about check_argc() in the previous two cases?
You mean fail if -e or -l have extra arguments?
>> + return git_config_set_multivar(argv[0], value, "^$", 0);
>
> Now that I see this, there is another idea for a possible cleanup after
> the parseoptification: cmd_config() should not return -1, as that will be
> turned into the exit status. So maybe prefix the return value with "!!"?
>
> Or maybe even better: set a variable "ret" and at the end of cmd_config(),
> "return !!ret;"?
Huh? So git commands don't return negative error values?
--
Felipe Contreras
next prev parent reply other threads:[~2009-02-14 20:32 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-14 2:05 [PATCH] config: Use parseopt Felipe Contreras
2009-02-14 9:28 ` Junio C Hamano
2009-02-14 9:35 ` Junio C Hamano
2009-02-14 10:41 ` Felipe Contreras
2009-02-14 10:37 ` Felipe Contreras
2009-02-14 11:40 ` Johannes Schindelin
2009-02-14 12:03 ` [PATCH v2] " Felipe Contreras
2009-02-14 15:21 ` Jeff King
2009-02-14 15:24 ` Felipe Contreras
2009-02-14 19:59 ` Johannes Schindelin
2009-02-14 20:19 ` Junio C Hamano
2009-02-14 21:08 ` human readable diffs, was " Johannes Schindelin
2009-02-14 20:31 ` Felipe Contreras [this message]
2009-02-14 22:32 ` Johannes Schindelin
2009-02-14 22:36 ` Jakub Narebski
2009-02-14 22:54 ` Johannes Schindelin
2009-02-15 9:04 ` Felipe Contreras
2009-02-15 11:26 ` Johannes Schindelin
2009-02-15 12:07 ` Felipe Contreras
2009-02-15 12:33 ` Johannes Schindelin
2009-02-15 12:51 ` Felipe Contreras
2009-02-15 13:38 ` Felipe Contreras
2009-02-15 19:31 ` Junio C Hamano
2009-02-15 19:41 ` Johannes Schindelin
2009-02-15 21:22 ` Junio C Hamano
2009-02-15 21:29 ` Johannes Schindelin
2009-02-17 0:50 ` Felipe Contreras
2009-02-15 19:36 ` Junio C Hamano
2009-02-14 12:15 ` [PATCH] " Felipe Contreras
2009-02-14 19:11 ` Johannes Schindelin
2009-02-14 19:14 ` Felipe Contreras
2009-02-14 19:24 ` Johannes Schindelin
2009-02-14 19:26 ` Johannes Schindelin
2009-02-14 21:13 ` Felipe Contreras
2009-02-14 19:29 ` Junio C Hamano
2009-02-14 20:09 ` Felipe Contreras
2009-02-14 20:35 ` Junio C Hamano
2009-02-14 21:01 ` Felipe Contreras
2009-02-14 21:10 ` Junio C Hamano
2009-02-14 21:24 ` Felipe Contreras
2009-02-14 21:15 ` Johannes Schindelin
2009-02-15 2:22 ` Junio C Hamano
2009-02-14 11:52 ` Jakub Narebski
2009-02-14 12:06 ` Felipe Contreras
2009-02-14 15:17 ` Jeff King
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=94a0d4530902141231t143067e5n872558a4e515be4a@mail.gmail.com \
--to=felipe.contreras@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
/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 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 NNTP newsgroup(s).