Re: [PATCH] Teach/Fix git-pull/git-merge --quiet and --verbose

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Oct 14, 2008 at 12:13 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote:
> tuncer.ayaz@xxxxxxxxx writes:
>
>> From: Tuncer Ayaz <tuncer.ayaz@xxxxxxxxx>
>>
>> Updated patch to current Junio master.
>
> That's not a commit log message, is it?

Sorry, I was referring to my previous post and
this was my first post via send-email.

Is it ok for me to include the log message here?

-->
After fixing clone -q I noticed that pull -q does not do what
it's supposed to do and implemented --quiet/--verbose by
adding it to builtin-merge and fixing two places in builtin-fetch.

I have not touched/adjusted contrib/completion/git-completion.bash
but can take a look if wanted. I think it already needs one or two
adjustments caused by recent --OPTIONS changes in master.

I've tested the following invocations with the below changes applied:
$ git pull
$ git pull -q
$ git pull -v
<--

is that good enough or did I miss something?

>> Signed-off-by: Tuncer Ayaz <tuncer.ayaz@xxxxxxxxx>
>> ---
>>  Documentation/merge-options.txt |    8 ++++++++
>>  builtin-fetch.c                 |    5 +++--
>>  builtin-merge.c                 |   22 +++++++++++++++-------
>>  git-pull.sh                     |   10 ++++++++--
>>  4 files changed, 34 insertions(+), 11 deletions(-)
>>
>> diff --git a/Documentation/merge-options.txt b/Documentation/merge-options.txt
>> index 007909a..427cdef 100644
>> --- a/Documentation/merge-options.txt
>> +++ b/Documentation/merge-options.txt
>> @@ -1,3 +1,11 @@
>> +-q::
>> +--quiet::
>> +     Operate quietly.
>> +
>> +-v::
>> +--verbose::
>> +     Be verbose.
>> +
>>  --stat::
>>       Show a diffstat at the end of the merge. The diffstat is also
>>       controlled by the configuration option merge.stat.
>> diff --git a/builtin-fetch.c b/builtin-fetch.c
>> index ee93d3a..287ce33 100644
>> --- a/builtin-fetch.c
>> +++ b/builtin-fetch.c
>> @@ -372,12 +372,13 @@ static int store_updated_refs(const char *url, const char *remote_name,
>>                               SUMMARY_WIDTH, *kind ? kind : "branch",
>>                                REFCOL_WIDTH, *what ? what : "HEAD");
>>               if (*note) {
>> -                     if (!shown_url) {
>> +                     if ((verbose || !quiet) && !shown_url) {
>
> A pair of external verbosity flag -q and -v may be acceptable, but is it
> sane to have a pair of variables in code always used like this?  In other
> words, this makes me wonder if a single "verbosity level" variable that
> can be set to quiet, normal and verbose would make it more readable.  For
> example, this one would say:
>
>        if (verbosity >= VERBOSITY_NORMAL && !shown_url) {
>                ...
>        }

what I would actually prefer to implement are separate
printf functions for verbose, info and error messages
and display them according to:
info: sent to ouput if verbose is set or quiet is not set
error: always sent to ouput
verbose: only sent to output if verbose is set

you could get that with your "verbosity level" solution.
to keep it simple I would avoid adding any more
levels or topics to logging and if someone really wants
to either declare trace_printf to be debug_printf
or rename it :).

if that make sense I would like to teach this to
git as a general option as far as possible and get
rid of all the if clauses in front of printf calls.

> Also what does your command line parsing code do when the user gives -q
> and -v at the same time?  Does the last one on the command line win?
> Shouldn't you instead get an error message (which of course would mean you
> would need to fix the caller in git-pull.sh)?

I thought about that also and at least in this patch
tried to handle it by ignoring quiet if verbose is set.
this may not be the logic everyone wants to have
and exclusively allowing either -q or -v makes
more sense.

>> +                     if (verbose || !quiet)
>> +                             fprintf(stderr, " %s\n", note);
>
> Ditto.
>
>> +     if (verbose || !quiet)
>> +             printf("%s%s\n", squash ? " (nothing to squash)" : "", msg);
>
> Ditto.
>
>> +             if (verbose || !quiet)
>> +                     printf("%s\n", msg);
>> +             if ((verbose || !quiet) && !merge_msg.len)
>
> Ditto.
>
>> +     if (!verbose && quiet)
>> +             show_diffstat = 0;
>
> Hmph, ah, that's (!(verbose || !quiet)).  See the readability issue?

your version is more readable. the human mind seems to
have a problem with double or triple negations :).

>> +             if (verbose || !quiet)
>> +                     printf("Updating %s..%s\n",
>> +                             hex,
>> +                             find_unique_abbrev(remoteheads->item->object.sha1,
>> +                             DEFAULT_ABBREV));
>
> Ditto.
>
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux