Part of the problem migrating is that there's a bunch of stuff in the repository that shouldn't be in a code repository at all. Plus We have all of the "default" 0AD mod/resources in the same repo as all engine code. These are really orthogonal, and belong in separate repositories. We have many dependencies in the repository. These do not belong in a code repository, but some sort of binary repository/dependency management system (eg, Nuget in the C# world, or maven for Java). C++, however, has not traditionally used one of these systems. The final, built binaries, are in the repository. Ideally, we should probably be doing something like: Git repository for main engine code (+ some small default resources). This can be self-hosted, or use an existing provider and backup a copy every day. Dependency management repository for code artifacts. There are some out there for C++, although we will likely have to host at least some of our own. Git repository for the "default" 0AD mod code Repository/ies for art source files. Note that the goal would be to have no "built" items in a live repository, instead: Dependency management repository for built art files. This also gets used by: Binary repository that combines art files and mod + engine code into the finished product. .... which would be quite some work to set up. I think the best first step, though, would be to start getting dependencies out of the main repository and into a package management system.