Я не знаю, является ли это упрощенным ответом, но у меня есть похожий проект (по кодам): 2 больших приложения, одно с примерно 10 модулями и одно с 15 модулями. У нас есть все в одном хранилище Subversion (например, svn / trunk / app1 и svn / trunk / app02). В корневой папке (svn / trunk) у нас есть очень простой pom, который определяет версию и оба приложения как подмодули.
С этой настройкой мы можем сделать большую часть того, что вы упомянули. Даже отделение от каждой команды разработчиков, так как каждая команда фиксирует свою папку / проект. Мы даже храним другие артефакты, такие как документация и дизайн (svn / trunk / Документация), поэтому мы можем отслеживать, какая документация у нас была для конкретной версии.
Я знаю, что это не отвечает вашей первой озабоченности (вы не можете проверить всю базу кода), но зачем вам нужно "извлекать все ветви из всех подпроектов"? Это не звучит правильно. У вас есть быстрое соединение с сервером SVN?
Примечание. Мы не генерируем комбинированные отчеты, так как мы больше заинтересованы в том, чтобы иметь отчет по каждому приложению, поскольку они совершенно разные.