threads / discuss / 48606

git push requires a worktree?

Subject: git push requires a worktree?

## tl;dr

3 messages between May 30, 2018 and May 30, 2018.

replies: 2people: 3as markdown or json

David Turner· May 30, 2018, 17:16 UTC · lore

I am doing a funny thing where I do git -C .git/modules/morx push fleem:fleem. This is failing in the case where I have a sparse checkout and the worktree directory "morx" (which is where .git/modules/morx/config's core.worktree points) doesn't exist.

I don't know why git push cares about the worktree -- it'll happily work in a bare repo with no worktree at all, or if the worktree is an unrelated git repo or whatever.

I can work around it, but if there's a bug, I think we should fix it.
Stefan Beller· May 30, 2018, 17:32 UTC · re: David Turner · lore

Re: git push requires a worktree?

On Wed, May 30, 2018 at 10:16 AM, David Turner <novalis@novalis.org> wrote:
> I am doing a funny thing where I do git -C .git/modules/morx push
> fleem:fleem.
I can do that, too. :)
> This is failing in the case where I have a sparse
> checkout and the worktree directory "morx" (which is where
> .git/modules/morx/config's core.worktree points) doesn't exist.
I could reproduce that without sparseness by removing that directory.

Before removing the dir in the worktree, the push worked fine; after removing I got a

    fatal: cannot chdir to '../../../entropy': No such file or directory
> I don't know why git push cares about the worktree -- it'll happily
> work in a bare repo with no worktree at all, or if the worktree is an
> unrelated git repo or whatever.
I think we should unset the worktree config for submodules that are
not checked out. I confirm that running
  git config --unset -f .git/modules/<name>/config core.worktree
will have the push working as expected.
So I think it is not so much a bug in push, but there is
* a bug in the submodule data design: Why do we need to store
  core.worktree if there is no worktree? (I'll research if there are
  historic artefacts that would suggest we need that)
* the setup code for commands that do not have the
  NEED_WORK_TREE flag in git.c
> I can work around it, but if there's a bug, I think we should fix it.
I think so, too.
Duy Nguyen· May 30, 2018, 18:50 UTC · re: Stefan Beller · lore

Re: git push requires a worktree?

On Wed, May 30, 2018 at 7:32 PM, Stefan Beller <sbeller@google.com> wrote:
> * the setup code for commands that do not have the
>   NEED_WORK_TREE flag in git.c

Unless it's very urgent, I can fix it later (and hopefully soon-ish). The problem is definitely not with setting core.worktree but with too eagerly chdir() when you don't need it. We also have another problem (chdir'ing too late) in the same area that led to the introduction of chdir-notify. If I'm successful in killing chdir-notify by chdir at the right time and with the right condition, then it should fix this as well. I'm pretty close to it, I think.

-- 
Duy

← back to recent threads