What is the problem with submodules? I like to use them because it means the code I need from another repo remains the same until I update it. No unexpected breaking changes.
This comment sums up the issues better than I could: https://news.ycombinator.com/item?id=31792396