From: Franck Date: Fri, 20 Jan 2006 10:07:09 GMT Subject: Re: [QUESTION] about .git/info/grafts file Message-ID: In-Reply-To: <7virsf7lb9.fsf@assigned-by-dhcp.cox.net> 2006/1/20, Junio C Hamano : > Junio C Hamano writes: > > > It _might_ work if you tell your downloader to have a proper > > graft file in his repository to cauterize the commit ancestry > > chain _before_ he pulls from you, though. I haven't tried it > > (and honestly I did not feel that is something important to > > support, so it might work by accident but that is not by > > design). > > I just tried it and it actually works. > > $ git clone git.git junk > $ cd junk ;# I am not brave enough to risk the real thing ;-) > $ git rev-parse master~4 >.git/refs/info/grafts > $ cd .. > $ mkdir cloned > $ cd cloned > $ git init-db > $ cp ../junk/.git/info/grafts .git/info/ > $ git clone-pack ../baz > $ git fsck-objects --full > $ git log --pretty=short | cat > Just to be sure, what you call baz is actually junk ? > This "only the tip of the git.git" repository has about 450 > objects in it, fully packed because of clone-pack, with one 680K > packfile. I tried that but I don't have same results. Did you delete all branchs except master before running clone-pack ? In my case I cloned the whole thing. So junk and cloned repos are the same size > I think the true full history of git.git/ packed into > one is aruond a 5MB packfile. I suspect a bigger repository > would not see that much size reduction, as Linus already > explained here. sorry, but I didn't understand his explaination, surely because of my very limited knowledge about git internals... > > You could emulate what I just did above to prepare the > equivalent of "baz" above, and make it available over git:// > protocol, say at git://franck.example.com/franck.git/. > does the git protocol is really needed in your example ? or can rsync work fine too since "franck.git" repo is cautorized so every objects of this repo shouldn't be part of old history, so they should be usefull, no ? Thanks. -- Franck