From: Thomas Rast <trast@student.ethz.ch>
To: git@vger.kernel.org
Subject: Re: [RFC] log(n)-transmissions common commit handshake
Date: Thu, 18 Sep 2008 10:18:18 +0200 [thread overview]
Message-ID: <200809181018.52811.trast@student.ethz.ch> (raw)
In-Reply-To: <200809180100.32626.trast@student.ethz.ch>
[-- Attachment #1: Type: text/plain, Size: 1446 bytes --]
I wrote:
> * Impact/clever use of refs
>
> For some reason, current git sends all refs to the server, even if
> the server should already know about lots of them. For example, in
> git.git, emitting v1.6.0.2 covers almost all tags in the repository
> by simple ancestor scanning.
>
> Is there a reason for this behaviour? Otherwise it would be better
> to emit them in date order and intelligently handle commons. (In
> fact this does not depend on the discussed change.)
As an addendum, I think the following would be a good way to cleverly
use refs to reduce work:
Cache a "reduced" DAG which just maps the ref'd commit relationships,
i.e., shows the reachability of refs only. This needs to be written
out to disk between invocations.
At the start of the protocol, the server announces all its refs. We
can use the reduced DAG to infer the minimal set of ref heads we need
to announce to have the server know all common ones. We can also mark
all the other refs as "common but not announced yet", so that the
backwards marking and searching routines know to stop there.
This should reduce the number of refs listed back to the server to
only a handful, and at the same time, stop the client from searching
backwards through _all_ history (which can take a bit of time, and is
one of the weaknesses of my proposal) in most cases.
- Thomas
--
Thomas Rast
trast@student.ethz.ch
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
prev parent reply other threads:[~2008-09-18 8:20 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-17 23:00 [RFC] log(n)-transmissions common commit handshake Thomas Rast
2008-09-17 23:01 ` [RFC PATCH] fetch-pack: log(n)-transmission find_common() Thomas Rast
2008-09-24 0:48 ` [RFC PATCH v2] " Thomas Rast
2008-10-23 19:38 ` Thomas Rast
2008-10-24 15:49 ` Nicolas Pitre
2008-10-27 10:29 ` Nanako Shiraishi
2008-10-28 3:24 ` Junio C Hamano
2008-10-28 14:46 ` Nicolas Pitre
2008-10-28 19:37 ` Thomas Rast
2008-12-06 23:20 ` [RFC PATCH v3 0/2] " Thomas Rast
2008-12-06 23:20 ` [RFC PATCH v3 1/2] fetch-pack: rearrange main loop Thomas Rast
2008-12-06 23:20 ` [RFC PATCH v3 2/2] fetch-pack: log(n)-transmission find_common() Thomas Rast
2008-09-18 8:18 ` Thomas Rast [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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200809181018.52811.trast@student.ethz.ch \
--to=trast@student.ethz.ch \
--cc=git@vger.kernel.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).