Re: git-diff-tree does not use alternate objects for submodules
- From
Heiko Voigt <hvoigt@hvoigt.net>
- Date
- May 9, 2012, 21:58 UTC
- Message-ID
- <20120509215815.GC74366@book.hvoigt.net>
- In-Reply-To
- <7v1umuznuj.fsf@alter.siamese.dyndns.org>
Hi,
On Tue, May 08, 2012 at 08:36:36AM -0700, Junio C Hamano wrote:
Show 23 quoted lines
> Orgad and Raizel Shaneh <orgads@gmail.com> writes: > > > I have a project with a submodule. Both have objects/info/alternate > > (different ones). > > > > After running 'git gc', running gitk on the superproject results in: > > ?? Submodule sub 227e2b5...d8597e2 (commits not present) > > When "--submodule" option was implemented in 752c0c, it was done with an > premature and incomplete optimization, and I think you are seeing an > unfortunate side effect of it. The code attempts to link the object store > of the submodule repository into the in-core representation of the object > store of the superproject (in submodule.c::add_submodule_odb()), but does > not do a good job of it. It does not take alternates into account, and > who knows what else is missing. Sigh... > > The right approach to implement this feature would have been to fork a > child process and perform the submodule operation inside the child, which > will chdir into the submodule and treat as if it is a freestanding git > repository, without contaminating the superproject process. > > For now, an easiest workaround would be to rephrase the error message to > "commits not present" to "commit not present or missing", or something.
I will have a look if I can come up with something that reads the submodules alternate config and uses it. Do you have other config related things in mind that might be missing?
Cheers Heiko