From: Junio C Hamano <gitster@pobox.com>
To: Peter Kaestle <peter.kaestle@nokia.com>
Cc: Philippe Blain <levraiphilippeblain@gmail.com>,
git@vger.kernel.org, Eric Sunshine <sunshine@sunshineco.us>,
Ralf Thielow <ralf.thielow@gmail.com>
Subject: Re: [PATCH v3] submodules: fix of regression on fetching of non-init subsub-repo
Date: Tue, 08 Dec 2020 12:46:56 -0800 [thread overview]
Message-ID: <xmqqr1o06n5r.fsf@gitster.c.googlers.com> (raw)
In-Reply-To: <1607442126-34705-1-git-send-email-peter.kaestle@nokia.com> (Peter Kaestle's message of "Tue, 8 Dec 2020 16:42:06 +0100")
Peter Kaestle <peter.kaestle@nokia.com> writes:
> A regression has been introduced by a62387b (submodule.c: fetch in
> submodules git directory instead of in worktree, 2018-11-28).
>
> The scenario in which it triggers is when one has a repository with a
> submodule inside a submodule like this:
> superproject/middle_repo/inner_repo
>
> Person A and B have both a clone of it, while Person B is not working
> with the inner_repo and thus does not have it initialized in his working
> copy.
>
> Now person A introduces a change to the inner_repo and propagates it
> through the middle_repo and the superproject.
>
> Once person A pushed the changes and person B wants to fetch them using
> "git fetch" at the superproject level, B's git call will return with
> error saying:
>
> Could not access submodule 'inner_repo'
> Errors during submodule fetch:
> middle_repo
>
> Expectation is that in this case the inner submodule will be recognized
> as uninitialized submodule and skipped by the git fetch command.
>
> This used to work correctly before 'a62387b (submodule.c: fetch in
> submodules git directory instead of in worktree, 2018-11-28)'.
>
> Starting with a62387b the code wants to evaluate "is_empty_dir()" inside
> .git/modules for a directory only existing in the worktree, delivering
> then of course wrong return value.
>
> This patch ensures is_empty_dir() is getting the correct path of the
> uninitialized submodule by concatenation of the actual worktree and the
> name of the uninitialized submodule.
>
> Furthermore a regression test case is added, which tests for recursive
> fetches on a superproject with uninitialized sub repositories. This
> issue was leading to an infinite loop when doing a revert of a62387b.
>
> The first attempt to fix this regression, in 1b7ac4e6d4 (submodules:
> fix of regression on fetching of non-init subsub-repo, 2020-11-12), by
> simply reverting a62387b, resulted in an infinite loop of submodule
> fetches in the simpler case of a recursive fetch of a superproject with
> uninitialized submodules, and so this commit was reverted in 7091499bc0
> (Revert "submodules: fix of regression on fetching of non-init
> subsub-repo", 2020-12-02).
> To prevent future breakages, also add a regression test for this
> scenario.
>
> Signed-off-by: Peter Kaestle <peter.kaestle@nokia.com>
> CC: Junio C Hamano <gitster@pobox.com>
> CC: Philippe Blain <levraiphilippeblain@gmail.com>
> CC: Ralf Thielow <ralf.thielow@gmail.com>
> CC: Philippe Blain <levraiphilippeblain@gmail.com>
> ---
Thanks, will replace.
next prev parent reply other threads:[~2020-12-08 20:47 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-02 15:56 BUG in fetching non-checked out submodule Ralf Thielow
2020-12-02 17:19 ` Philippe Blain
2020-12-02 23:06 ` Junio C Hamano
2020-12-03 7:54 ` Peter Kästle
2020-12-03 15:25 ` Philippe Blain
2020-12-03 15:33 ` Peter Kästle
2020-12-03 18:12 ` Junio C Hamano
2020-12-04 15:23 ` [PATCH] submodules: fix of regression on fetching of non-init subsub-repo Peter Kaestle
2020-12-04 18:06 ` Eric Sunshine
2020-12-07 8:28 ` Peter Kästle
2020-12-07 8:40 ` Eric Sunshine
2020-12-07 13:46 ` [PATCH v2] " Peter Kaestle
2020-12-07 18:42 ` Philippe Blain
2020-12-07 19:43 ` Junio C Hamano
2020-12-08 8:46 ` Peter Kästle
2020-12-07 19:56 ` Junio C Hamano
2020-12-08 14:06 ` Peter Kästle
2020-12-07 19:22 ` Junio C Hamano
2020-12-07 20:44 ` Philippe Blain
2020-12-07 21:02 ` Junio C Hamano
2020-12-07 21:10 ` Junio C Hamano
2020-12-08 14:58 ` Peter Kästle
2020-12-08 15:42 ` [PATCH v3] " Peter Kaestle
2020-12-08 15:51 ` Peter Kästle
2020-12-08 20:46 ` Junio C Hamano [this message]
2020-12-08 23:25 ` Philippe Blain
2020-12-09 9:58 ` Peter Kästle
2020-12-09 10:58 ` [PATCH v4] " Peter Kaestle
2020-12-09 14:00 ` Philippe Blain
2020-12-03 7:45 ` BUG in fetching non-checked out submodule Ralf Thielow
2020-12-03 8:20 ` Peter Kästle
2020-12-03 9:38 ` Ralf Thielow
2020-12-03 9:43 ` Peter Kästle
2020-12-03 12:30 ` Ralf Thielow
2020-12-03 15:10 ` Peter Kästle
2020-12-03 16:45 ` Ralf Thielow
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=xmqqr1o06n5r.fsf@gitster.c.googlers.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=levraiphilippeblain@gmail.com \
--cc=peter.kaestle@nokia.com \
--cc=ralf.thielow@gmail.com \
--cc=sunshine@sunshineco.us \
/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).