From: Stefan Beller <sbeller@google.com>
To: "Tomasz Śniatowski" <tsniatowski@vewd.com>
Cc: Duy Nguyen <pclouds@gmail.com>, git <git@vger.kernel.org>
Subject: Re: Regression: submodule worktrees can clobber core.worktree config
Date: Thu, 10 Jan 2019 12:07:34 -0800 [thread overview]
Message-ID: <CAGZ79kZ9ibM4eDyK=M6YWEDsjt+JfqJH-Gm56+092VATGuZDaw@mail.gmail.com> (raw)
In-Reply-To: <CAG0vfyR3KnDDBrpyG-n-RFbu-xgCLFUa6HUXQ+dk8E4HutR+ow@mail.gmail.com>
> I had a look at https://gitlab.com/pclouds/git/commits/submodules-in-worktrees,
> and it doesn't seem to be quite all okay.
>
> The submodule update step of the repro (that breaks the config on 2.20) emits
> an error message instead, and leaves the config unchanged:
> git -C b2 submodule update
> fatal: could not set 'core.worktree' to '../../../../../../b2/a'
> It looks a bit like it's still trying to do the wrong thing, but errors out
> during the attempt (repo_config_set_worktree_gently returns false).
There is more than just that. After adding the worktrees,
(and after the first status call)
$ cat b2/.git
gitdir: /u/git/t/trash directory.t7419-submodule-worktrees/b/.git/worktrees/b2
$ cat b2/a/.git
gitdir: /u/git/t/trash
directory.t7419-submodule-worktrees/b/.git/modules/a/worktrees/a
Are worktrees using absolute path for their gitlinks?
Submodules themselves try really hard to use relative path:
$ cat b/a/.git
gitdir: ../.git/modules/a
> Curiously, even though it says "fatal", it will then perform the actual
> submodule update if it's required.
Oh. :/ I think we should solve that by either warning
(but that gives bad UX) or actually aborting, by adding
a "|| exit 1" in git-submodule.sh in cmd_update where we
call "git submodule--helper ensure-core-worktree".
When we run "git -C b2 submodule update", it calls
"git submodule--helper ensure-core-worktree a" which
currently would make sure that b2/a/.git points to
b2/.git/modules/a, but that is not the case as b2 and b2/a
are worktrees, whose git directories are housed in
b/.git/worktrees.
So maybe we need to be a bit more careful and check
if b2/a/.git resolves to a worktree and if so we'd not
touch it at all (and warn about it?).
>
> Same behavior on master with a subset of that branch cherry-picked, that is:
> https://gitlab.com/pclouds/git/commit/94751ada7c32eb6fb2c67dd7723161d1955a5683
> along with two others it needed to build:
> https://gitlab.com/pclouds/git/commit/d26ab4c5013f6117814161be3e87c8d2b73561a4
> https://gitlab.com/pclouds/git/commit/b2e21eece6b35e00707ed3a8377a84a95da6b778
>
> --
> Tomasz Śniatowski
next prev parent reply other threads:[~2019-01-10 20:07 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-08 22:16 Regression: submodule worktrees can clobber core.worktree config Tomasz Śniatowski
2019-01-08 23:22 ` Duy Nguyen
2019-01-09 6:40 ` Tomasz Śniatowski
2019-01-09 9:12 ` Duy Nguyen
2019-01-09 17:42 ` Stefan Beller
2019-01-09 23:57 ` Tomasz Śniatowski
2019-01-10 20:07 ` Stefan Beller [this message]
2019-01-11 0:07 ` Duy Nguyen
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='CAGZ79kZ9ibM4eDyK=M6YWEDsjt+JfqJH-Gm56+092VATGuZDaw@mail.gmail.com' \
--to=sbeller@google.com \
--cc=git@vger.kernel.org \
--cc=pclouds@gmail.com \
--cc=tsniatowski@vewd.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).