From: Johannes Sixt Date: Fri, 26 Jan 2007 09:21:58 GMT Subject: Re: grafts+repack+prune = history at danger Message-ID: <45B9C836.728F31EC@eudaptics.com> In-Reply-To: <7vr6ti183o.fsf@assigned-by-dhcp.cox.net> Junio C Hamano wrote: > 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, -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