Re: [PATCH 2/3] Teach read_tree_recursive() how to traverse into submodules
- From
- Lars Hjemli <hjemli@gmail.com>
- Date
- Jan 18, 2009, 19:45 UTC
- Message-ID
- <8c5c35580901181145x2e14fe0fq4ab0e94c13bad38a@mail.gmail.com>
- In-Reply-To
- <alpine.DEB.1.00.0901181929220.3586@pacific.mpi-cbg.de>
On Sun, Jan 18, 2009 at 19:33, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
Show 9 quoted lines
> On Sun, 18 Jan 2009, Lars Hjemli wrote: >> Actually, I want this to work for bare repositories by specifying the >> submodule odbs in the alternates file. So if the current submodule odb >> wasn't found my plan was to check if the commit object was accessible >> anyways but don't die() if it wasn't. > > Please make that an explicit option (cannot think of a good name, though), > otherwise I will not be able to use your feature. Making it the default > would be inconsistent with the rest of our submodules framework.
Would a test on is_bare_repository() suffice for your use-case? That is, something like this:
if (!add_gitlink_odb(path->buf)) {
linked_odb = 1;
if (resolve_gitlink_ref(path->buf, "HEAD", sha1))
die("Unable to lookup HEAD in %s", path->buf);
} else if (!is_bare_repository())
return 0;If this isn't good enough, how do you propose it be solved?
Show 14 quoted lines
>
>> >> + commit = lookup_commit(sha1);
>> >> + if (!commit)
>> >> + die("traverse_gitlink(): internal error");
>> >
>> > s/internal error/could not access commit '%s' of submodule '%s'",
>> > sha1_to_hex(sha1), path);/
>>
>> Ok (I belive this codepath is virtually impossible to hit, hence the
>> "internal error", but I could of course be mistaken).
>
> You make it a function that is exported to other parts of Git in cache.h.
> So you might just as well expect it to be used by other parts at some
> stage.This function is local to tree.c, but your point is still valid.
-- larsh