Re: Bugreport - submodules are fetched twice in some cases
- From
Glen Choo <chooglen@google.com>
- Date
- Apr 29, 2022, 19:05 UTC
- Message-ID
- <kl6l4k2bpv61.fsf@chooglen-macbookpro.roam.corp.google.com>
- In-Reply-To
- <xmqqczgzdc1r.fsf@gitster.g>
Junio C Hamano <gitster@pobox.com> writes:
Show 32 quoted lines
> A simple and concrete reproduction > > git init top > cd top > date >file1 > git init sub > cd sub > date >subfile1 > git add . > git commit -m subinitial > cd .. ;# back to top > git submodule add ./sub sub > git add file1 > git commit -m initial > cd .. ;# out of top > git clone --recurse-submodules top copy > cd copy > git config submodule.recurse true > git config fetch.parallel 0 > GIT_TRACE2=$(pwd)/trace git fetch --all --prune --prune-tags > > This throws the three lines to the output. > > Fetching origin > Fetching submodule sub > Fetching submodule sub > > The two "Fetching submodule" messages are coming from two separate > calls to get_fetch_task_from_index(), and the trace does show that > the code is doing "git-upload-pack" three times (one for the top > level, twice for the same top/sub). We can see it by grepping > for "git-upload-pack" in the resulting 'trace' file above.
Thanks for the reproduction recipe and findings, that'll be very helpful :)
> Glen, as submodule.c::fetch_submodules() was created in your heavy > refactoring quite recently, I thought I'd redirect this report in > your direction, as I expect you'd be the most clueful in this area > ;-)
Hm, this does look like something that I probably introduced. But even if it turns out to be older than that, I think I am the right person to fix it, yes.
I'm a little caught up with the embedded bare repo work, but I think I can find time to debug this within the next 2 working days or so.