git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Taylor Blau <me@ttaylorr.com>
Subject: Re: [PATCH] check_everything_connected: assume alternate ref tips are valid
Date: Sat, 29 Jun 2019 03:55:36 -0400	[thread overview]
Message-ID: <20190629075536.GB5080@sigill.intra.peff.net> (raw)
In-Reply-To: <xmqqpnmx8ysf.fsf@gitster-ct.c.googlers.com>

On Fri, Jun 28, 2019 at 09:22:56AM -0700, Junio C Hamano wrote:

> >  	argv_array_push(&rev_list.args, "--quiet");
> > +	argv_array_push(&rev_list.args, "--alternate-refs");
> >  	if (opt->progress)
> >  		argv_array_pushf(&rev_list.args, "--progress=%s",
> >  				 _("Checking connectivity"));
> 
> Quite honestly, I am very surprised that we did not do this.  The
> idea of alternate object store, as well as reducing transfer cost by
> advertising their tips as '.have' phony refs, is almost as old as
> the pack protocol itself.

Yeah, as you note we are already telling the other side of the push
"hey, we already have these objects". So we are almost always just
walking over our own local objects in the connectivity check, which is
silly.

I only did "clone --reference" in the perf test because it was the
simplest, but a push to a server with alternates should be similarly
improved. E.g., doing this in a clone of linux.git:

  git init --bare dst.git
  echo '../../.git/objects' >dst.git/objects/info/alternates
  time git push dst.git HEAD

goes from 40+ seconds to 100ms or so. Again, obviously that's the best
case, but it should also improve the normal case of somebody pulling
down "torvalds/linux.git" and pushing it back up to their own
"peff/linux.git", too.

I don't have real-world numbers yet from GitHub, because we're not
actually advertising .haves on push right now. All of the Git pieces are
now in places to do so, but we still have to make some tweaks at our
replication layer. But soon. :)

-Peff

  reply	other threads:[~2019-06-29  7:55 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-28 10:11 [PATCH] check_everything_connected: assume alternate ref tips are valid Jeff King
2019-06-28 10:18 ` Jeff King
2019-06-28 12:51 ` Derrick Stolee
2019-06-29  7:43   ` Jeff King
2019-07-01 12:25     ` Derrick Stolee
2019-07-01 12:59       ` Jeff King
2019-07-01 13:17         ` Jeff King
2019-07-01 13:17           ` [PATCH 1/2] object-store.h: move for_each_alternate_ref() from transport.h Jeff King
2019-07-01 13:23             ` Derrick Stolee
2019-07-01 13:18           ` [PATCH v2 2/2] check_everything_connected: assume alternate ref tips are valid Jeff King
2019-07-03  9:12             ` SZEDER Gábor
2019-07-03 16:41               ` Jeff King
2019-07-03 16:46                 ` Junio C Hamano
2019-07-03 16:50                 ` SZEDER Gábor
2019-07-03 17:05                   ` Junio C Hamano
2019-07-01 17:02           ` [PATCH] " Taylor Blau
2019-07-02  5:29             ` Jeff King
2019-06-28 16:22 ` Junio C Hamano
2019-06-29  7:55   ` Jeff King [this message]
2019-07-01 12:26     ` Derrick Stolee

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190629075536.GB5080@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=me@ttaylorr.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).