git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Shawn Pearce <spearce@spearce.org>
To: Nguyen Thai Ngoc Duy <pclouds@gmail.com>
Cc: "Junio C Hamano" <gitster@pobox.com>,
	"Steffen Prohaska" <prohaska@zib.de>,
	"Andreas Ericsson" <ae@op5.se>,
	"Ævar Arnfjörð" <avarab@gmail.com>,
	"Git Mailing List" <git@vger.kernel.org>,
	"Jeff King" <peff@peff.net>,
	"Johannes Schindelin" <Johannes.Schindelin@gmx.de>
Subject: Re: Is anyone working on a next-gen Git protocol?
Date: Wed, 10 Oct 2012 20:08:41 -0700	[thread overview]
Message-ID: <CAJo=hJsFLqV7ye0LZzQOrt6EpUXNVjqYfPp9ixO52=CBWcQtdw@mail.gmail.com> (raw)
In-Reply-To: <CACsJy8DMStBNjucU2eitNdkYgk-1K04dxhqV2gpKOZkpLzR_iA@mail.gmail.com>

On Wed, Oct 10, 2012 at 6:44 PM, Nguyen Thai Ngoc Duy <pclouds@gmail.com> wrote:
> On Thu, Oct 11, 2012 at 3:46 AM, Junio C Hamano <gitster@pobox.com> wrote:
>> Steffen Prohaska <prohaska@zib.de> writes:
>>
>>> I've recently discovered that the current protocol can be amazingly
>>> inefficient when it comes to transferring binary objects.  Assuming two
>>> repositories that are in sync.  After a 'git checkout --orphan && git
>>> commit', a subsequent transfers sends all the blobs attached to the new
>>> commit, although the other side already has all the blobs.
>>
>> I do not think it has anything to do with binary, but what you
>> deserve from using orphan, where you declared that the history does
>> not have anything to do with the original.
>>
>> If both of your repositories had the two paralle lines of these
>> histories as branches, the transfer would have went well with or
>> without binary objects.
>
> On the same inefficient subject, git does not try to share common
> objects for non-commit refs, for example tags pointing to trees. I
> have such a peculiar repo and if a new tag shares 90% the tree with
> existing tags, git-fetch to sends the whole tree of the new tag over
> the wire. It does not seem easy to fix though and is probably rare
> enough that does not justify proper support. As a work around, I
> generate commits that link all these tags/trees together in a
> predetermined order. Not nice but works ok.

Aside from saving a huge amount of CPU during the "Counting objects"
phase, the compressed bitmap work we presented in JGit solves this by
working off the complete reachability graph, and not just some subset
related to a cut made across the commit graph. Unfortunately we took a
shortcut and didn't create bitmaps for non-commits, but this is a
trivial modification to the algorithm and the storage.

      reply	other threads:[~2012-10-11  3:09 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-07 19:57 Is anyone working on a next-gen Git protocol? Ævar Arnfjörð Bjarmason
2012-10-07 20:22 ` Ilari Liusvaara
2012-10-07 22:08 ` Jeff King
2012-10-07 22:31 ` Junio C Hamano
2012-10-22  4:59   ` Junio C Hamano
2012-10-08  9:05 ` Andreas Ericsson
2012-10-08 16:27   ` Junio C Hamano
2012-10-10 19:13     ` Steffen Prohaska
2012-10-10 20:46       ` Junio C Hamano
2012-10-10 22:32         ` Philip Oakley
2012-10-11  1:44         ` Nguyen Thai Ngoc Duy
2012-10-11  3:08           ` Shawn Pearce [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

  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='CAJo=hJsFLqV7ye0LZzQOrt6EpUXNVjqYfPp9ixO52=CBWcQtdw@mail.gmail.com' \
    --to=spearce@spearce.org \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=ae@op5.se \
    --cc=avarab@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=pclouds@gmail.com \
    --cc=peff@peff.net \
    --cc=prohaska@zib.de \
    /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).