From: Andreas Ericsson <ae@op5.se>
To: Jon Smirl <jonsmirl@gmail.com>
Cc: Jakub Narebski <jnareb@gmail.com>, git@vger.kernel.org
Subject: Re: Change set based shallow clone
Date: Fri, 08 Sep 2006 10:48:39 +0200 [thread overview]
Message-ID: <45012E67.6050406@op5.se> (raw)
In-Reply-To: <9e4733910609071341u7e430214j71ddcbefa26810ca@mail.gmail.com>
Jon Smirl wrote:
> On 9/7/06, Jakub Narebski <jnareb@gmail.com> wrote:
>> I don't understand. Git is _not_ patchset based (like GNU Arch, or
>
> I meant change set to refer to a commit plus trees plus blobs that
> make it up. These may be present in full or delta form.
>
>> Mercurial, or CVS). It is snapshot based. So if you want to download
>> "skip", you need only for the local part of doenloader to make
>> appropriate
>> grafts, like below
>>
>>
>> *--*--*--*--*--*--*--*--*--*--*--HEAD (server)
>>
>> *--*--*...........*--*--*--*--*--HEAD (shallow/sparse clone)
>>
>> But the part you were talking about is _easy_ part; the hard part is
>> merges including merging branch which was split off the trunk before
>> cutoff-point, history rewriting (c.f. 'pu' branch, and rebases), etc.
>
> Does an average user do these things? The shallow clone is there to
> address the casual user who gags at a five hour download to get an
> initial check out Mozilla when they want to make a five line change or
> just browse the source for a few minutes.
>
A better idea would be to allow those users to download a gzipped
tarball of a pre-grafted repository. It shouldn't be terribly difficult
to set up an update-hook that creates the pre-grafted repository for you
whenever a tag (or some such) is created in the repo you host wherever
everybody does their initial clone from.
As I understand it (although I've admittedly followed the git
mailing-list sporadically the past three or so months), grafts already
work as intended, and the users can then fetch into their grafted repo
to get a bare minimum of objects.
>
> There would also be a command to bring down all of the objects to
> fully populate a sparse tree. You could do the shallow clone to begin
> with and then do the full tree populate overnight or in the
> background.
>
With the pre-grafted history this would work as follow
$ mkdir pregraft
$ wget http://pre-grafts.mozilla.org/pregrafted.git.tgz
$ cd pregraft
$ tar xvzf ../pregrafted.git.tgz
$ cd ..
$ git clone mozilla-repo-url >& /dev/null &
$ cd pregraft
# work, work, work; full clone completes
$ cd ../mozilla-repo
$ git pull ../pregraft master
or something similar.
iow, you get the small repo quickly and can start hacking while the
full-history clone is downloading. If I understand grafts correctly, you
could then merge in your changes made in the grafted repo to the one
with full history.
> Maybe the answer is to build a shallow clone tool for casual use, and
> then if you try to run anything too complex on it git just tells you
> that you have to download the entire tree.
>
I believe all tools that work with history understand grafts already,
and if so they should provide sane messages when the user attempts to
access history beyond the grafts. I might have missed or misunderstood
something, but this seems to me like a simple solution to a complex problem.
--
Andreas Ericsson andreas.ericsson@op5.se
OP5 AB www.op5.se
Tel: +46 8-230225 Fax: +46 8-230231
next prev parent reply other threads:[~2006-09-08 8:48 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-07 19:52 Change set based shallow clone Jon Smirl
2006-09-07 20:21 ` Jakub Narebski
2006-09-07 20:41 ` Jon Smirl
2006-09-07 21:33 ` Jeff King
2006-09-07 21:51 ` Jakub Narebski
2006-09-07 21:37 ` Jakub Narebski
2006-09-07 22:14 ` Junio C Hamano
2006-09-07 23:09 ` Jon Smirl
2006-09-10 23:20 ` Anand Kumria
2006-09-08 8:48 ` Andreas Ericsson [this message]
2006-09-07 22:07 ` Junio C Hamano
2006-09-07 22:40 ` Jakub Narebski
2006-09-08 3:54 ` Martin Langhoff
2006-09-08 5:30 ` Junio C Hamano
2006-09-08 7:15 ` Martin Langhoff
2006-09-08 8:33 ` Junio C Hamano
2006-09-08 17:18 ` A Large Angry SCM
2006-09-08 14:20 ` Jon Smirl
2006-09-08 15:50 ` Jakub Narebski
2006-09-09 3:13 ` Petr Baudis
2006-09-09 8:39 ` Jakub Narebski
2006-09-08 5:05 ` Aneesh Kumar K.V
2006-09-08 1:01 ` linux
2006-09-08 2:23 ` Jon Smirl
2006-09-08 8:36 ` Jakub Narebski
2006-09-08 8:39 ` Junio C Hamano
2006-09-08 18:42 ` linux
2006-09-08 21:13 ` Jon Smirl
2006-09-08 22:27 ` Jakub Narebski
2006-09-08 23:09 ` Linus Torvalds
2006-09-08 23:28 ` Jon Smirl
2006-09-08 23:45 ` Paul Mackerras
2006-09-09 1:45 ` Jon Smirl
2006-09-10 12:41 ` Paul Mackerras
2006-09-10 14:56 ` Jon Smirl
2006-09-10 16:10 ` linux
2006-09-10 18:00 ` Jon Smirl
2006-09-10 19:03 ` linux
2006-09-10 20:00 ` Linus Torvalds
2006-09-10 21:00 ` Jon Smirl
2006-09-11 2:49 ` Linus Torvalds
2006-09-10 22:41 ` Paul Mackerras
2006-09-11 2:55 ` Linus Torvalds
2006-09-11 3:18 ` Linus Torvalds
2006-09-11 6:35 ` Junio C Hamano
2006-09-11 18:54 ` Junio C Hamano
2006-09-11 8:36 ` Paul Mackerras
2006-09-11 14:26 ` linux
2006-09-11 15:01 ` Jon Smirl
2006-09-11 16:47 ` Junio C Hamano
2006-09-11 21:52 ` Paul Mackerras
2006-09-11 23:47 ` Junio C Hamano
2006-09-12 0:06 ` Jakub Narebski
2006-09-12 0:18 ` Junio C Hamano
2006-09-12 0:25 ` Jakub Narebski
2006-09-11 9:04 ` Jakub Narebski
2006-09-10 18:51 ` Junio C Hamano
2006-09-11 0:04 ` Shawn Pearce
2006-09-11 0:42 ` Junio C Hamano
2006-09-11 0:03 ` Shawn Pearce
2006-09-11 0:41 ` Junio C Hamano
2006-09-11 1:04 ` Jakub Narebski
2006-09-11 2:44 ` Shawn Pearce
2006-09-11 5:27 ` Junio C Hamano
2006-09-11 6:08 ` Shawn Pearce
2006-09-11 7:11 ` Junio C Hamano
2006-09-11 17:52 ` Shawn Pearce
2006-09-11 2:11 ` Jon Smirl
2006-09-09 1:05 ` Paul Mackerras
2006-09-09 2:56 ` Linus Torvalds
2006-09-09 3:23 ` Junio C Hamano
2006-09-09 3:31 ` Paul Mackerras
2006-09-09 4:04 ` Linus Torvalds
2006-09-09 8:47 ` Marco Costalba
2006-09-09 17:33 ` Linus Torvalds
2006-09-09 18:04 ` Marco Costalba
2006-09-09 18:44 ` linux
2006-09-09 19:17 ` Marco Costalba
2006-09-09 20:05 ` Linus Torvalds
2006-09-09 20:43 ` Jeff King
2006-09-09 21:11 ` Junio C Hamano
2006-09-09 21:14 ` Jeff King
2006-09-09 21:40 ` Linus Torvalds
2006-09-09 22:54 ` Jon Smirl
2006-09-10 0:18 ` Linus Torvalds
2006-09-10 1:22 ` Junio C Hamano
2006-09-10 3:49 ` Marco Costalba
2006-09-10 4:13 ` Junio C Hamano
2006-09-10 4:23 ` Marco Costalba
2006-09-10 4:46 ` Marco Costalba
2006-09-10 4:54 ` Junio C Hamano
2006-09-10 5:14 ` Marco Costalba
2006-09-10 5:46 ` Junio C Hamano
2006-09-10 15:21 ` linux
2006-09-10 18:32 ` Marco Costalba
2006-09-11 9:56 ` Paul Mackerras
2006-09-11 12:39 ` linux
2006-09-10 9:49 ` Jakub Narebski
2006-09-10 10:28 ` Josef Weidendorfer
-- strict thread matches above, loose matches on Subject: below --
2006-09-09 10:31 linux
2006-09-09 13:00 ` Marco Costalba
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=45012E67.6050406@op5.se \
--to=ae@op5.se \
--cc=git@vger.kernel.org \
--cc=jnareb@gmail.com \
--cc=jonsmirl@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).