Re: [PATCH 12/12] receive-pack: avoid duplicates between our refs and alternates
- From
Jeff King <peff@peff.net>
- Date
- Jan 25, 2017, 20:05 UTC
- Message-ID
- <20170125200522.a7lh5d5tav3zcf2o@sigill.intra.peff.net>
- In-Reply-To
- <xmqq60l2c3hl.fsf@gitster.mtv.corp.google.com>
On Wed, Jan 25, 2017 at 12:02:30PM -0800, Junio C Hamano wrote:
Show 10 quoted lines
> > +extract_ref_advertisement () {
> > + perl -lne '
> > + # \\ is there to skip capabilities after \0
> > + /push< ([^\\]+)/ or next;
> > + exit 0 if $1 eq "0000";
> > + print $1;
> > + '
>
> Parsing TRACE_PACKET output? Yuck. But I think this has to do, as
> any other solution will bound to be uglier.Agreed. My initial attempt was to just run "git receive-pack </dev/null" and parse the advertisement. But then you have to parse pktlines. :)
Show 15 quoted lines
> > + # Notable things in this expectation: > > + # - local refs are not de-duped > > + # - .have does not duplicate locals > > + # - .have does not duplicate itself > > + local=$(git -C fork rev-parse HEAD) && > > + shared=$(git -C shared rev-parse only-shared) && > > + cat >expect <<-EOF && > > + $local refs/heads/master > > + $local refs/remotes/origin/HEAD > > + $local refs/remotes/origin/master > > + $shared .have > > + EOF > > We may want to sort this thing and the extracted one when comparing; > the order of the entries is not part of the feature we cast in stone.
True (and in fact the .have moved in the previous patch). I wondered, though, if it might not be a reasonable thing for somebody to have to look at the output and verify it when the order _does_ change.
I dunno.
-Peff