From: "Martin Langhoff" <martin.langhoff@gmail.com>
To: "Jan Hudec" <bulb@ucw.cz>
Cc: "Grégoire Barbier" <gb@gbarbier.org>,
"Jakub Narebski" <jnareb@gmail.com>,
git@vger.kernel.org
Subject: Re: git over webdav: what can I do for improving http-push ?
Date: Fri, 4 Jan 2008 12:54:58 +1300 [thread overview]
Message-ID: <46a038f90801031554j6218f08cl6c9608b24e1675f8@mail.gmail.com> (raw)
In-Reply-To: <20080103211521.GA4225@efreet.light.src>
On Jan 4, 2008 10:15 AM, Jan Hudec <bulb@ucw.cz> wrote:
> Now to keep it stateless, I thought that:
...
> This would guarantee, that when you want n revisions, you make at most
> log2(n) requests and get at most 2*n revisions (well, the requests are for
That is still a lot! How about, for each ref
- Client sends a POST listing the ref and the latest related commit
it has that the server is likely to have (from origin/heads/<ref>).
Optionally, it can provide a blacklist of <treeish> (where every
object refered is known) and blob sha1s.
- Server sends the new sha1 of the ref, and a thin pack that covers the changes
- The client can disconnect to stop the transaction. For example --
if it sees the sha1 of a huge object that it already has. It can
re-request, with a blacklist.
A good number of objects will be sent unnecesarily - with no option to
the client to say "I have this" - but by using the hint of letting the
server know we have origin/heads/<ref> I suspect that it will be
minimal.
Also:
- It will probably be useful to list all the refs the client knows
from that server in the request.
- If the ref has changed with a non-fast-forward, the server needs to
say so, and provide a listing of the commits. As soon as the client
spots a common commit, it can close the connection -- it now knows
what ref to tell the server about in a subsequent command.
This way, you ideally have 1 request per ref, 2 if it has been
rebased/rewound. This can probably get reorganised to do several refs
in one request.
cheers,
m
next prev parent reply other threads:[~2008-01-03 23:55 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-30 22:59 git over webdav: what can I do for improving http-push ? Grégoire Barbier
2007-12-31 3:46 ` Daniel Barkalow
2007-12-31 16:57 ` Graham Barr
2008-01-01 11:33 ` Jan Hudec
2008-01-01 11:41 ` Grégoire Barbier
2008-01-01 18:12 ` Jakub Narebski
2008-01-01 20:23 ` Jan Hudec
2008-01-03 19:14 ` Grégoire Barbier
2008-01-03 21:15 ` Jan Hudec
2008-01-03 21:43 ` Linus Torvalds
2008-01-03 21:47 ` Jakub Narebski
2008-01-03 23:29 ` Grégoire Barbier
2008-01-03 23:54 ` Martin Langhoff [this message]
2008-01-04 19:59 ` Jan Hudec
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=46a038f90801031554j6218f08cl6c9608b24e1675f8@mail.gmail.com \
--to=martin.langhoff@gmail.com \
--cc=bulb@ucw.cz \
--cc=gb@gbarbier.org \
--cc=git@vger.kernel.org \
--cc=jnareb@gmail.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.
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).