I have a following program structure:
Program /
|- LibA /
| |- SharedLib
|
|- LibB /
| |- SharedLib
|
|- LibC /
| |- SharedLib
|
|- ... /
| |- SharedLib
|
|- LibZ /
| |- SharedLib
|
|- SharedLib
LibsA-Z are libraries used to control external hardware. They're "standalone" libraries used by both my program and some external applications, so they must exist as separate projects & repositories. They're also very numerous (with more to come in the future) and they all reference the library SharedLib that provides some interfaces and other elements they rely on.
SharedLib is also a separate project/repository and I would like to include it as a submodule in the other libraries. The problem with this approach is that I would then have over a dozen of duplicate SharedLib submodules locally and would have to repeatedly fetch/pull the same files dozens of times after every adjustment to SharedLib.
Is there a way to make my program's submodule structure less wonky?
I have seen some potential fixes for this issue (example), but I'm unsure about how reproducible they are (e.g., if someone pulls my Program repository, will they have to redo all the steps I had to do?). I also failed to find any official/recommended approaches to this issue.