Confusing error message due to Git trusting is_bare_repository()
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Mar 25, 2011, 10:56 UTC
- Message-ID
- <AANLkTi=9CpMU9aZs2zuvRyv3rpECkRAvYA0Srnc61whg@mail.gmail.com>
I had a co-worker git this well-known error message:
error: refusing to update checked out branch: refs/heads/master
error: By default, updating the current branch in a non-bare repository
error: is denied, because it will make the index and work tree inconsistent
error: with what you pushed, and will require 'git reset --hard' to match
error: the work tree to HEAD.It *was* a bare repo, but the config file had bare=false because someone had simply copied a .git tree from a non-bare repo to make it.
The issue is that we just use this:
int is_bare_repository(void)
{
/* if core.bare is not 'false', let's see if there is a work tree */
return is_bare_repository_cfg && !get_git_work_tree();
}For the purposes of the error message it would be helpful if we also detected whether something didn't have a working tree, but was set to bare=false, and tell the user to updatet he bare=false to bare=true for his almost-bare repository.