git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <junkio@cox.net>
To: Franck <vagabon.xyz@gmail.com>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: [QUESTION] about .git/info/grafts file
Date: Thu, 19 Jan 2006 17:14:02 -0800	[thread overview]
Message-ID: <7virsf7lb9.fsf@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: 7v8xtdrqwg.fsf@assigned-by-dhcp.cox.net

Junio C Hamano <junkio@cox.net> 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

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 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.

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/.

Then you tell your downloaders something like this:

	This repository has been cauterized, and cannot be
	cloned in a usual manner, but once you make a clone
	everything including further incremental updates should
	work.

        To clone this repository:

		$ mkdir franckproject ;# make a new repository
		$ cd franckproject && git init-db
		$ echo 'XXxxxxXXxxx' >.git/info/grafts
		$ git clone-pack git://franck.example.com/franck.git/

  parent reply	other threads:[~2006-01-20  1:14 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cda58cb80601170928r252a6e34y@mail.gmail.com>
2006-01-17 17:32 ` [QUESTION] about .git/info/grafts file Franck
2006-01-18 17:47   ` Franck
2006-01-19  0:40   ` Junio C Hamano
2006-01-19 10:51     ` Franck
2006-01-19 13:09       ` Petr Baudis
2006-01-19 16:58         ` Linus Torvalds
2006-01-19 17:30           ` Petr Baudis
2006-01-19 17:33           ` Franck
2006-01-19 17:49             ` Linus Torvalds
2006-01-19 18:24           ` Junio C Hamano
2006-01-19 18:24       ` Junio C Hamano
2006-01-20 13:43         ` Franck
2006-01-19 11:10     ` Andreas Ericsson
2006-01-19 13:05       ` Petr Baudis
2006-01-19 13:31       ` Franck
2006-01-19 13:44         ` Andreas Ericsson
2006-01-19 17:45           ` Petr Baudis
2006-01-20 20:48           ` Ryan Anderson
2006-01-20  1:14     ` Junio C Hamano [this message]
2006-01-20 10:07       ` Franck
2006-01-20 17:59         ` Junio C Hamano

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=7virsf7lb9.fsf@assigned-by-dhcp.cox.net \
    --to=junkio@cox.net \
    --cc=git@vger.kernel.org \
    --cc=vagabon.xyz@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).