git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Egon Elbre <egonelbre@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: Having an invalid HEAD file causes git not to recognize the repository
Date: Tue, 21 Aug 2012 03:24:03 -0400	[thread overview]
Message-ID: <20120821072403.GD3238@sigill.intra.peff.net> (raw)
In-Reply-To: <CANtNKfp+9HpvWkAO0vrm84oMiJNvjFg9T-UtNQko+ABHhEWj6w@mail.gmail.com>

On Fri, Aug 17, 2012 at 02:42:33PM +0300, Egon Elbre wrote:

> Having an invalid HEAD file causes git not to recognize the repository
> and will cause an invalid message "fatal: Not a git repository (or any
> of the parent directories): .git" although there is a .git folder and
> everything seems okay in it. Solution was just to change HEAD to a
> valid ref/hash.

Right. When we search for a .git directory, we do a few sanity checks on
each candidate, like whether it has a properly-formatted HEAD, and
whether it has "objects" and "refs" directories. We have to balance
these heuristics to avoid false negatives (like yours, when the
directory was meant to be a repository but looked bogus) with false
positives (when we accidentally treat some random directory like a git
repository).

Since you don't have a working repository, the best we could do is say
"well, this looks like a repository, but it's broken, so I kept
looking". I think the best approach would probably be to have a new
GIT_TRACE_GITDIR environment variable to help debug git-dir lookup
(i.e., to print out details of the search as it happens).

> I ran into this problem when I had a BSOD during a rebase (ignore that
> I'm having to use Windows). This meant that only half of the hash got
> written into HEAD and all git commands I tried failed.

That generally shouldn't happen, as we write new ref content to a
temporary file and then rename it into place atomically. I wonder if
there is a problem with the atomicity there (we do not fsync after
close, which some filesystems might want), or if it was simply
filesystem corruption related to your BSOD.

-Peff

  reply	other threads:[~2012-08-21  7:24 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-17 11:42 Having an invalid HEAD file causes git not to recognize the repository Egon Elbre
2012-08-21  7:24 ` Jeff King [this message]
2012-08-21  8:07   ` Egon Elbre

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120821072403.GD3238@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=egonelbre@gmail.com \
    --cc=git@vger.kernel.org \
    /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.
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 NNTP newsgroup(s).