У меня есть большая база кода под контролем источника (была subversion, теперь git). Чтобы скомпилировать код и запустить тесты, я использую набор сторонних библиотек. Эти библиотеки можно разделить на несколько категорийL
- Только для бинарников
- Сторонние источники
- Сторонние источники + локальные модификации
В каждой библиотеке есть {Windows, Linux} X {debug, release} X {32bit, 64bit} конфигурации. Кроме того, эти библиотеки эволюционируют со временем, а разные версии моего проекта используют разные версии/сборки этих библиотек.
Мой вопрос - это лучший способ сохранить эти сторонние стороны?
Вот мой набор настроек:
- Сохранять размер исходного хранилища проекта
- Храните источник проекта в синхронизации с третьими сторонами, поэтому я всегда могу скомпилировать и запустить и старую версию
- Простота управления
- Кросс-платформа
Я пробовал и думал о нескольких решениях, но ни один из них не был удовлетворительным:
- Используйте версию script с версией для извлечения двоичных файлов с управляемого вручную FTP-сервера, который содержит все версии библиотек. Это работает, но требует тщательного управления структурой каталогов на сервере. Это ошибка, поскольку кто-то может перезаписать один из двоичных файлов с новой сборкой.
- Внешние внешние элементы SVN. В то время, когда внешние элементы SVN не могли ссылаться на определенный тег. Сегодня я использую git.
- Git subodules - вытягивает весь внешний репозиторий, который может быть огромным. В качестве альтернативы он требует управления отдельным хранилищем для каждой отдельной библиотеки. Подмодуль указывает на определенный тег, который означает, что либо я получаю все внешние, когда мне нужно только некоторые, либо я имитирую какую-то странную файловую систему в дереве git.
Мне ясно, что сторонние источники должны храниться в git в ветке поставщика, но двоичные файлы и заголовки - это разные истории.