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: Wed, 18 Jan 2006 16:40:47 -0800 [thread overview]
Message-ID: <7v8xtdrqwg.fsf@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: cda58cb80601170932o6f955469y@mail.gmail.com
Franck <vagabon.xyz@gmail.com> writes:
> I'm wondering why the "grafts" files is not involved during
> push/pull/clone operations ?
Commit ancestry grafting is a local repository issue and even if
you manage to lie to your local git that 300,000th commit is the
epoch, the commit object you send out to the downloader would
record its true parent (or parents, if it is a merge), so the
downloader would want to go further back. And no, rewriting
that commit and feeding a parentless commit to the downloader is
not an option, because such a commit object would have different
object name and unpack-objects would be unhappy.
If you choose not to have full history in your public repository
for whatever reason (ISP server diskquota comes to mind) that is
OK, but be honest about it to your downloaders. Tell them that
you do not have the full history, and they first need to clone
from some other repository you started your development upon, in
order to use what you added upon. "This repository does not
have all the history -- please first clone from XX repository
(you need at least xxx commit), and then do another 'git pull'
from here", or something like that.
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).
> $ git-merge-base master origin
> # nothing
Maybe you did not use grafts properly to cauterize? I tried the
following and am getting expected results. I did not have
patience to do 300,000, so I cut things at #4, though.
-- 8< --
#!/bin/sh
rm -fr .git
git init-db
echo 0 >path
git add path
for i in 1 2 3 4 5 6 7
do
echo $i >path
git commit -a -m "Iteration #$i"
git tag "iter#$i"
done
git checkout -b mine iter#4
for i in A B C D
do
echo $i >path
git commit -a -m "Alternate #$i"
git tag "alt#$i"
done
git log --pretty=oneline --topo-order
echo merge base is `git merge-base master mine` | git name-rev --stdin
git-rev-parse iter#4 >.git/info/grafts
echo "Cauterize away history before #4"
git log --pretty=oneline --topo-order
echo merge base is `git merge-base master mine` | git name-rev --stdin
next prev parent reply other threads:[~2006-01-19 0:40 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 [this message]
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
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=7v8xtdrqwg.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).