+1

Refresh (WT): per-repository option to ignore scanning of submodules

griscom 4 years ago updated 4 years ago 6

I'm doing embedded development, and my main repository has lots of enormous submodules (Linux, U-Boot, Buildroot). Even worse, I'm working on a networked drive. The results: updates sometimes take a minute or more.

I'd like to have a project-level option to ignore submodule contents. When necessary, I can open the submodules separately and update them that way, but most of the time I won't need to make submodule changes.

Are the submodules registered/tracked (i.e. exist for all users) or nested roots (i.e. only exist for you)? What exactly is slow with these large submodules: initial scanning of the repository, refreshing, pulling, switching branches, ...?

They are indeed registered for everyone. In other words, there's a .gitmodules file in the top repo with the following (partial) contents:

[submodule "buildroot"]
path = buildroot
url = ../../ext/buildroot.git
[submodule "linuxptp"]
path = linuxptp
url = ../../ext/linuxptp.git
[submodule "linux"]
path = linux
url = ../../ext/linux.git
[submodule "u-boot"]
path = u-boot
url = ../../ext/u-boot.git
branch = u-boot-2013.01-15t1-clearfog <snip>

What is slow is just about everything. And again: this is over a networked drive (with sshfs), so that's part of the problem, but it isn't something I can easily make local, as the build system depends on Linux, and I'm running on a Mac.

When changing Preferences, Low-Level Property "refresh.scanIntoSubmodules" to "false" -- does that resolve the problem?

Well, things are now a bit faster (where "a bit" means "two orders of magnitude". Yowza. ;)

I presume this is an application-level preference; can this be done on a per-repo basis? And, there doesn't seem to be a UI indication that submodules aren't being scanned (I just tweaked a submodule, and the top repo still shows "Unchanged"); could there be? Best case would be some sort of "Unmanaged" indication, with a method to open and see the state of that submodule.

I have updated the subject. Do you agree?