From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: "Philip Oakley" <philipoakley@iee.org>,
"René Scharfe" <l.s.r@web.de>,
"Git Mailing List" <git@vger.kernel.org>
Subject: Re: [PATCH] use child_process_init() to initialize struct child_process variables
Date: Tue, 4 Nov 2014 18:32:15 -0500 [thread overview]
Message-ID: <20141104233215.GA16091@peff.net> (raw)
In-Reply-To: <xmqq4muepr40.fsf@gitster.dls.corp.google.com>
On Tue, Nov 04, 2014 at 01:56:15PM -0800, Junio C Hamano wrote:
> >> 2. Including two lines, like:
> >>
> >> $sha1 HEAD\0symref=refs/heads/master
> >> $sha1 HEAD
> >>
> >> which JGit does the right thing with (and git.git seems to, as
> >> well).
> >
> > Sounds sensible, even though it looks ugly X-<.
>
> I have a mild preference for a syntax that is more similar to the
> on-wire protocol, so that connect.c::parse_feature_value() can be
> reused to parse it and possibly annotate_refs_with_symref_info() can
> also be reused by calling it from transport.c::get_refs_from_bundle().
Yeah, what I wrote above was the simplest thing that could work, and
does not need to be the final form. I know that you already know what
I'm about to describe below, Junio, but I want to expand on the
situation for the benefit of onlookers (and potential implementers like
Philip).
The online protocol is hampered by the "if you see something after a
NUL, it is a capabilities string, and you must throw out the previous
capabilities string and replace it with this one" historical rule. And
that's why we cannot do:
$sha1 refs/heads/master\0thin-pack side-band etc
$sha1 HEAD\0symref=refs/heads/master
as it would throw out "thin-pack", "side-band", etc. Instead we do it
more like:
$sha1 refs/heads/master\0thin-pack side-band etc symref=HEAD:refs/heads/master
$sha1 HEAD
to shove _all_ of the symref mappings into the capability string, rather
than letting them ride along with their respective refs. The downside is
that we are bounded in the number of symref mappings we can send (by the
maximum length for a single pkt-line), and therefore send only the value
of HEAD.
The bundle code is not bound by this historical legacy, and could do it
in a different (and more efficient and flexible) way. But it is probably
saner to just keep them identical. It makes the code simpler, and having
bundle as the only transport which has the extra flexibility does not
really buy us much (and probably just invites confusion).
-Peff
next prev parent reply other threads:[~2014-11-04 23:32 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-28 20:52 [PATCH] use child_process_init() to initialize struct child_process variables René Scharfe
2014-10-28 21:58 ` mike.gorchak.qnx
2014-10-29 17:21 ` Jeff King
2014-10-29 19:16 ` Junio C Hamano
2014-10-30 18:07 ` Junio C Hamano
2014-10-30 21:25 ` Jeff King
2014-10-30 18:08 ` [PATCH] bundle: split out a helper function to compute and write prerequisites Junio C Hamano
2014-10-30 21:26 ` Jeff King
2014-10-30 21:35 ` [PATCH] use child_process_init() to initialize struct child_process variables Jeff King
2014-10-31 0:19 ` Philip Oakley
2014-10-31 21:48 ` Junio C Hamano
2014-11-01 3:33 ` Jeff King
2014-11-02 22:54 ` Philip Oakley
2014-11-03 18:26 ` Junio C Hamano
2014-11-03 22:04 ` Jeff King
2014-11-03 23:42 ` Junio C Hamano
2014-11-04 21:56 ` Junio C Hamano
2014-11-04 23:32 ` Jeff King [this message]
2014-11-05 0:32 ` Junio C Hamano
2014-11-05 13:41 ` Philip Oakley
2014-11-05 13:35 ` Philip Oakley
2014-11-05 19:35 ` Jeff King
2014-11-05 23:50 ` Philip Oakley
2014-11-09 13:49 ` René Scharfe
2014-11-10 7:14 ` 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=20141104233215.GA16091@peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=l.s.r@web.de \
--cc=philipoakley@iee.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).