Re: Weird problem with long $PATH and alternates (bisected)
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Oct 26, 2008, 16:15 UTC
- Message-ID
- <7vljwb5o4p.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <237967ef0810260746w10e930c1sf36a2674f49afbe1@mail.gmail.com>
"Mikael Magnusson" <mikachu@gmail.com> writes:
Show 8 quoted lines
> % mkdir 1; cd 1 > % echo > a; git add a; git commit -m a > % cd .. > % git clone -s 1 2 > % git push . master:master > fatal: Could not switch to > '/tmp/a/1/.git/objects/n:/usr/games/bin:/usr/local/ipod-chain' > fatal: The remote end hung up unexpectedly
I think I see a bug in foreach_alt_odb() to add_refs_from_alternate() callchain, but I cannot explain why the contents of $PATH leaks to the error message.
Can you try this patch?
sha1_file.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
diff --git i/sha1_file.c w/sha1_file.c index ab2b520..98e7d7a 100644 --- i/sha1_file.c +++ w/sha1_file.c @@ -402,9 +402,11 @@ void foreach_alt_odb(alt_odb_fn fn, void *cb) struct alternate_object_database *ent; prepare_alt_odb(); - for (ent = alt_odb_list; ent; ent = ent->next) + for (ent = alt_odb_list; ent; ent = ent->next) { + *ent->name = '\0'; if (fn(ent, cb)) return; + } } void prepare_alt_odb(void)