All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Ramkumar Ramachandra <artagnon@gmail.com>
Cc: Git List <git@vger.kernel.org>, Eric Sunshine <sunshine@sunshineco.com>
Subject: Re: [PATCH v4 6/6] for-each-ref: avoid color leakage
Date: Tue, 19 Nov 2013 09:28:51 -0800	[thread overview]
Message-ID: <xmqqwqk48fn0.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <CALkWK0mnYXBVW-agV_v6=mPxA=MoJAfHQaPKarwKU=x2SE+tnQ@mail.gmail.com> (Ramkumar Ramachandra's message of "Tue, 19 Nov 2013 10:07:33 +0530")

Ramkumar Ramachandra <artagnon@gmail.com> writes:

> Junio C Hamano wrote:
>>> diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c
>>> index 2ff4e54..04e35ba 100644
>>> --- a/builtin/for-each-ref.c
>>> +++ b/builtin/for-each-ref.c
>>> @@ -23,6 +23,7 @@ typedef enum { FIELD_STR, FIELD_ULONG, FIELD_TIME } cmp_type;
>>>  struct atom_value {
>>>       const char *s;
>>>       unsigned long ul; /* used for sorting when not FIELD_STR */
>>> +     int color : 2; /* 1 indicates color, 2 indicates color-reset */
>>>  };
>>
>> Hmph.  It looks wasteful to have this information in atom_value.
>
> I wanted to avoid an ugly global. On the other end of the spectrum,
> modifying the various functions to take an extra reset_color_leakage
> parameter seems much too intrusive. Do you have any suggestions?

We already represent information that is for the format string as
existing globals. It means that, if we ever want to make the program
accept and use more than one format string, we can't.  We need one
set of them for each such format string before we can use more than
one.

If you want to solve that problem, complaining by using a subjective
word "ugly" does not help us much.  The right approach to the
solution would be to first think what each global really means and
decide which ones are per-format properties.  Then turn them into a
proper abstraction by defining a structure to hold the currently
considered format string and these various "per format string"
properties.

Once you do that, you can optionally make the code pass that single
structure around, and that will remove the global, but I think that
step can wait until we actually find a need for it.

      parent reply	other threads:[~2013-11-19 17:28 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-18 17:39 [PATCH v4 0/6] Replacement for rr/for-each-ref-decoration Ramkumar Ramachandra
2013-11-18 17:39 ` [PATCH v4 1/6] t6300 (for-each-ref): clearly demarcate setup Ramkumar Ramachandra
2013-11-18 17:39 ` [PATCH v4 2/6] t6300 (for-each-ref): don't hardcode SHA-1 hexes Ramkumar Ramachandra
2013-11-18 17:39 ` [PATCH v4 3/6] for-each-ref: introduce %(HEAD) asterisk marker Ramkumar Ramachandra
2013-11-18 17:39 ` [PATCH v4 4/6] for-each-ref: introduce %(upstream:track[short]) Ramkumar Ramachandra
2013-11-18 17:39 ` [PATCH v4 5/6] for-each-ref: introduce %(color:...) for color Ramkumar Ramachandra
2013-11-18 17:39 ` [PATCH v4 6/6] for-each-ref: avoid color leakage Ramkumar Ramachandra
2013-11-18 21:55   ` Junio C Hamano
2013-11-19  4:37     ` Ramkumar Ramachandra
2013-11-19 16:26       ` Junio C Hamano
2013-11-19 17:32         ` Ramkumar Ramachandra
2013-11-19 17:28       ` Junio C Hamano [this message]

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=xmqqwqk48fn0.fsf@gitster.dls.corp.google.com \
    --to=gitster@pobox.com \
    --cc=artagnon@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=sunshine@sunshineco.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.