All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Krzesimir Nowak <krzesimir@endocode.com>
Cc: "Jakub Narębski" <jnareb@gmail.com>, git <git@vger.kernel.org>,
	"Eric Sunshine" <sunshine@sunshineco.com>
Subject: Re: [PATCH 2/3] gitweb: Add a feature for adding more branch refs
Date: Wed, 04 Dec 2013 09:57:31 -0800	[thread overview]
Message-ID: <xmqqli00lcs4.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1386161398.2173.9.camel@localhost.localdomain> (Krzesimir Nowak's message of "Wed, 04 Dec 2013 13:49:58 +0100")

Krzesimir Nowak <krzesimir@endocode.com> writes:

> On Tue, 2013-12-03 at 21:38 +0100, Jakub Narębski wrote:
>> On Tue, Dec 3, 2013 at 9:15 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> > Krzesimir Nowak <krzesimir@endocode.com> writes:
>> >
>> >> @@ -626,6 +640,17 @@ sub feature_avatar {
>> >>       return @val ? @val : @_;
>> >>  }
>> >>
>> >> +sub feature_extra_branch_refs {
>> >> +     my (@branch_refs) = @_;
>> >> +     my $values = git_get_project_config('extra_branch_refs');
>> >
>> > Hmph.  Three points.
>> >
>> > * Almost all callers of this function use
>> >
>> >     my ($val) = git_get_project_config(...);
>> >     my @val = git_get_project_config(...);
>> >
>> >   to expect that the function returns a list of things (and grab the
>> >   first one among them, not the length of the list).  Shouldn't this
>> >   part do the same?
>> 
>> Right. feature_snapshot() has here
>> 
>>     my (@fmts) = @_;
>>     my ($val) = git_get_project_config('snapshot');
>> 
>> ...though git_get_project_config returns scalar.
>
> So what's the point of it? 'my @val = git_get_project_config ()' just
> creates an array with one element.

The point is that "my ($val) = git_get_project_config('name')" calls
the sub in the list context like everybody else, which would be more
robust, if you want to be prepared for somebody else's change to the
implementation in the future, I think.

>> > * Wouldn't this be a good candidate for a multi-valued configuration
>> >   variable, e.g. shouldn't this
>> >
>> >         [gitweb]
>> >                 extraBranchRefs = wip
>> >                 extraBranchRefs = sandbox other
>> >
>> >   be parsed as a three-item list, qw(wip sandbox other)?
>> 
>> This would require changes in git_get_project_config(), which would
>> need to be able to deal with multi-valued result (it caches these
>> results, so we pay only one cost of `git config` call).
>
> Hm, actually not at all. Now, if I have a setup like Junio wrote the
> git_get_project_config just returns an array ref. So modifying the
> feature_extra_branch_refs to handle the returned value as either simple
> scalar or array reference should be enough.

Yes, changing the calling site to use of config_to_multi() around
(see the handling of 'ctag' for an example) and then concatenate the
result of splitting each returned element would be one way to do
this.

Jakub may have had in mind to teach git_get_project_config() to
return a list; because existing callers call the sub in the list
context, they will not get surprising result---even though they may
only use the first one and discard the rest.

Which might not be a bad thing in the longer term, but I think it is
outside the scope of this particular topic, but in order to prepare
for that kind of internal API enhancement, it would still help to
make sure that this new caller calls the sub in the list context
like others.

  reply	other threads:[~2013-12-04 17:57 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-03 14:56 [PATCH 0/3] Show extra branch refs in gitweb Krzesimir Nowak
2013-12-03 14:56 ` [PATCH 1/3] gitweb: Move check-ref-format code into separate function Krzesimir Nowak
2013-12-03 19:02   ` Junio C Hamano
2013-12-03 19:38     ` Jakub Narębski
2013-12-03 19:48       ` Junio C Hamano
2013-12-04 13:06       ` Krzesimir Nowak
2013-12-03 14:56 ` [PATCH 2/3] gitweb: Add a feature for adding more branch refs Krzesimir Nowak
2013-12-03 18:51   ` Junio C Hamano
2013-12-03 20:15   ` Junio C Hamano
2013-12-03 20:38     ` Jakub Narębski
2013-12-04 12:49       ` Krzesimir Nowak
2013-12-04 17:57         ` Junio C Hamano [this message]
2013-12-03 14:56 ` [PATCH 3/3] gitweb: Denote non-heads, non-remotes branches Krzesimir Nowak
2013-12-04 13:44 ` [PATCH 0/3] Show extra branch refs in gitweb Krzesimir Nowak

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=xmqqli00lcs4.fsf@gitster.dls.corp.google.com \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=jnareb@gmail.com \
    --cc=krzesimir@endocode.com \
    --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.