Сейчас я работаю над проектом с большим монрепо. Изначально это была куча независимых репо, но недавно они были объединены в моно. Этот шаг должен был улучшить время сборки и уменьшить сложность, однако время сборки все еще довольно велико.
Мы используем довольно много модулей. И частные и публичные c. Частные модули - это библиотеки, на которые опирается приложение, и над ними работает только очень небольшое подмножество разработчиков. Эффект net в том, что другие разработчики в команде вынуждены перестраивать больше, чем им нужно, а также файл проекта Xcode большего размера. Таким образом, большинство разработчиков несут «штрафы» за простоту и удобство разработчиков, работающих с частными модулями.
Одна мысль - перейти к готовым библиотекам. Это будет хорошо работать для общедоступных контейнеров, но представляет собой проблему для наших частных. Для более частой смены частных модулей, небольшое количество разработчиков, работающих над ними, должны иметь возможность вносить изменения. И прямо сейчас, как все работает, есть некоторая зависимость как от приложения, так и от модуля, поскольку для эффективной работы с модулем (который действительно можно рассматривать как библиотеку или инфраструктуру), вам нужно приложение, чтобы запустите, чтобы убедиться, что он работает полностью.
Одна вещь, о которой я подумал, это иметь какую-то систему, в которой режим «по умолчанию» - это использование prebuilt. Тем не менее, в случае разработчиков, которым нужен код, они могут сделать это, включив проект Xcode в качестве подпроекта и использовать этот артефакт вместо предварительно созданного.
Обратите внимание, что сейчас нет Файл проекта XCode для этих частных модулей, поскольку их источник находится в нашем монореполе, и модуль указывает на локальный источник.
Другой вариант, возможно, будет иметь более одного файла рабочей области для обоих случаев, но это грязно, если любая конфигурация проекта должна быть сделана в Xcode. Например, было бы предпочтительнее запустить сценарий, чтобы переключиться между предварительно созданным или подпроектом.
Кто-нибудь знает какие-либо стратегии для этого? Или если есть какие-либо эффективные средства для управления этим? Мы не привязаны к использованию стручков. Прямо сейчас это как раз то, что используется.
Я также изучаю SPM. Но в идеале нужно иметь предварительные сборки для подавляющего большинства разработчиков и для разработчиков, которые касаются большей части кода ... смесь предварительных сборок вместе с исходным кодом для конкретной библиотеки / модуля c, над которой они работают.