We are a small team working on a project, that uses come components developed by other teams. We have a Git repository on Bitbucket Server (self-hosted) and would like to incorporate external components in it, but keep them up-to-date.
The default solution for this task seems to be Git Submodules. But after working with them for a while, we discovered a few setbacks. I would like to ask the community, whether there's a better solution, or just we're doing it all wrong?
1. I would like to know when the external repository (that is a submodule to my home repository) is updated by the team, that works on it.
What happens now is that I might push the code to my home repository without knowing that the external component has been updated and is not incompatible with my code.
2. I would like to pull external repository updates together with my home repository updates. This seems to be doable in CLI, but not in SourceTree.
3. If I changed something in the external component, I would like to push these changes together with the ones I made to my home repository.
Now I have to switch between repositories and make several commits.
4. When I pull changes from an external repository, I have to make a new commit to my home repository, updating the submodules descriptor file.
Why can't this be done automatically?
5. I would like to include in my project certain folders from the external repository, not all of it. Sometimes the external repository is too large.
6. Basically, I would like to have a part of an external repository as a part of my home one, not another repository nested within it. That means I would like to see all my commits in the same tree because, whether I update my own code or the external component, it's still part of the work on the same project.
Any insights, please?