Many of us are familiar with the case when a project consists of several cross-used repositories (e.g., two apps and a shared library). The native Git way to handle this situation is Git Submodules, but they are not very convenient to use, to say the least. The most popular approach today is to put everything in one large monorepository, but it also has significant shortcomings (well described here). I've even met people who refuse to migrate from SVN to Git mostly because they can't imagine their life without svn:externals.
We at TMate Software have faced this problem a while ago and ended up devising a third way. We made a server-side tool that creates a directory in one repository, synchronized with another repository. All syncing is done on the server - for the end-user, it's still one regular Git repository, no need to run any special commands or push to external repositories separately. We called it 'Git X-Modules'.
We've been using this for almost a year, and it seems to do the trick. So, now you can try it out at the Marketplace.
What do you think of such an approach? Have we missed something important? For what workflows it won't fit?
Beginning on April 4th, we will be implementing push limits. This means that your push cannot be completed if it is over 3.5 GB. If you do attempt to complete a push that is over 3.5 GB, it will fail...