Re: grafts+repack+prune = history at danger
- From
Johannes Sixt <j.sixt@eudaptics.com>
- Date
- Jan 26, 2007, 09:21 UTC
- Message-ID
- <45B9C836.728F31EC@eudaptics.com>
- In-Reply-To
- <7vr6ti183o.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano wrote:
Show 8 quoted lines
> Graft is a local matter, but that does not mean it should > introduce inconsistencies. It is a way to _locally_ change the > world view, and to give the consistent world view locally, not > only the commands you listed (fsck, prune, pack-objects) but > also log, rev-list and friends all should take grafts into > account, which is why losing B is the right thing to do if you > repack or prune. In your altered world, B is not part of any > remaining history.
Here's my stance on it. Grafts should be a local matter. And they alter the world view, with a pronounciation on *view*. That's why I proposed that only log familiy of commands obey them[*]. And probably rev-list so that gitk et.al. have a way to obey them. And also the ref parser (so that master~20 is what it looks it is). Everything else should disregard grafts: repack, prune, fetch, <transfer>-pack, push etc. No nasty side effects anymore. No transfer of the grafts file needed. No clash when someone else has a different *view* of the world.
Then the location of the file in .git/info/grafts is justified. If grafts continue to have the radical influence that they have now, then the grafts file is better located in .git/objects/info/grafts as part of the objects database.
[*] ok, I originally also proposed the diff family, but that's likely not necessary.
-- Hannes