From: Jeff King <peff@peff.net>
To: Duy Nguyen <pclouds@gmail.com>
Cc: Andreas Krey <a.krey@gmx.de>, Git Mailing List <git@vger.kernel.org>
Subject: Re: Minor bug, git ls-files -o aborts because of broken submodules
Date: Fri, 22 Jan 2016 16:18:03 -0500 [thread overview]
Message-ID: <20160122211803.GA17071@sigill.intra.peff.net> (raw)
In-Reply-To: <CACsJy8BpCc6sNKUs3TsMnA_8dk+uFvZy1T_UmfQMxcm2bpg2uw@mail.gmail.com>
On Fri, Jan 22, 2016 at 04:17:29PM +0700, Duy Nguyen wrote:
> $ git init abc
> $ cd abc
> $ mkdir def
> $ echo 'gitdir: blah blah' >def/.git
> $ git ls-files -o
> fatal: Not a git repository: def/blah blah
>
> If some directory looks like a submodule but turns out not, that's not
> a fatal error. The stack trace is something like this. I suspect
> do_submodule_path should use the gently version..
>
> #1 0x0000000000588a78 in die
> #2 0x0000000000558ded in read_gitfile_gently
> #3 0x000000000051e2f6 in do_submodule_path
> #4 0x000000000051e484 in git_pathdup_submodule
> #5 0x00000000005340ac in resolve_gitlink_ref_recursive
> #6 0x00000000005342cf in resolve_gitlink_ref
> #7 0x00000000004dd20d in treat_directory
> #8 0x00000000004dd760 in treat_one_path
> #9 0x00000000004dd971 in treat_path
> #10 0x00000000004de038 in read_directory_recursive
I think we'd have to change the semantics going up the stack, as
do_submodule_path has no way to report failure.
But I think this is another case of
http://thread.gmane.org/gmane.comp.version-control.git/265560/focus=281253
There the question was about performance (lots of these clog up the
linear ref_cache list), but I think the root cause is the same: going
too far into ref resolution without realizing we don't have a real
submodule.
Andreas posted some patches, but they didn't make it to the list. Here
are my replies, which did:
http://article.gmane.org/gmane.comp.version-control.git/282028
http://article.gmane.org/gmane.comp.version-control.git/282029
http://thread.gmane.org/gmane.comp.version-control.git/282030
However, from going over them, I think there was a problem in the series;
we really do need to know the sha1 in some of these cases. So I think
maybe the simplest thing would be to catch this case in
resolve_gitlink_ref(), before we go deeper. Let me see if I can come up
with something.
-Peff
next prev parent reply other threads:[~2016-01-22 21:18 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-22 9:17 Minor bug, git ls-files -o aborts because of broken submodules Duy Nguyen
2016-01-22 21:18 ` Jeff King [this message]
2016-01-22 22:26 ` Jeff King
2016-01-22 22:27 ` [PATCH 1/2] clean: make is_git_repository a public function Jeff King
2016-01-22 22:29 ` [PATCH 2/2] resolve_gitlink_ref: ignore non-repository paths Jeff King
2016-01-22 22:31 ` Jeff King
2016-01-22 22:36 ` Stefan Beller
2016-01-22 22:40 ` Jeff King
2016-01-25 13:13 ` Minor bug, git ls-files -o aborts because of broken submodules Andreas Krey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160122211803.GA17071@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=a.krey@gmx.de \
--cc=git@vger.kernel.org \
--cc=pclouds@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).