Когда кто-то пишет проект с открытым исходным кодом, использует Google Code или GitHub и хочет использовать такую библиотеку, как Lua, как это сделать?
- Должна ли зависимость быть включена в хранилище?
- Должна ли зависимость быть построена из того же сценария сборки, что и остальная часть проекта, или из отдельного сценария сборки?
Учитывая, что библиотека не требует установки перед компиляцией.
open-source
version-control
dependencies
rightfold
источник
источник
Я думаю, что зависимости всегда должны быть включены в репозиторий, если их включение не нарушает никаких условий использования. Немногие вещи раздражают больше, чем необходимость вручную найти правильные версии нужных зависимостей, прежде чем вы сможете сделать сборку. Конечно, это легко, когда у вас есть автоматизированные инструменты, которые могут сделать это для вас, которые могут найти и загрузить нужную зависимость, но что делать, если вы в данный момент не подключены к сети, или сервер не работает, или проект зависимости был полностью прекращен и переведен в автономный режим? Всегда включайте зависимости, если это возможно.
Если нет веской причины для компиляции из исходного кода, используйте предварительно скомпилированные версии.
А почему бы не предоставить опции в скрипте сборки? Простой переключатель, чтобы выбрать, следует ли компилировать зависимости или нет. Если пользователь также решил скомпилировать зависимости, просто вызовите свои собственные сценарии сборки из сценария сборки вашего продукта. Таким образом, пользователь может вызвать сценарии сборки зависимостей вручную или выбрать создание полной сборки всего. Но я бы просто поставил зависимости в виде двоичных файлов, если нет веской причины для их компиляции из исходных текстов. Я думаю, что в мире Open Source некоторые лицензии требуют, чтобы вы распространяли источники вместе с вашим продуктом, но это не значит, что вы не можете предварительно их скомпилировать.
Вкратце: Предоставьте, по возможности, целый автономный рабочий пакет. Это обеспечит максимальное удобство для ваших пользователей.
источник
Это может относиться или не относиться к вашему варианту использования, но мы работаем над тем, чтобы в каждой ветви была папка «Ссылки». Мы размещаем сторонние библиотеки DLL здесь. Это вызывает большое дублирование относительно неизменных двоичных файлов в управлении исходным кодом, но хранилище стоит дешево, и в любой момент каждая ветка и тег имеют именно те зависимости (и версию!), Которые они ожидают.
Мы сами предварительно скомпилируем зависимости и переместим скомпилированные двоичные файлы в эту папку. К нашей собственной общедоступной библиотеке относятся так же. Таким образом, тот же метод работает для предварительно скомпилированных проприетарных библиотек, библиотек с открытым исходным кодом и внутренних библиотек.
Что касается ответа на ваш вопрос сейчас, когда я перечитал его, сделайте то же самое и просто упомяните, что ваш проект использует предварительно скомпилированную версию Lua 1.3.5.
источник
На него можно ссылаться в репозитории (любым пригодным для использования методом SCM), если эта зависимость является неотъемлемой частью продукта (исходная зависимость), а не двоичной зависимостью, которая может быть разрешена отдельно
Не имеет значения вообще. Вы можете выбрать любой метод в соответствии с вашими требованиями (скорость / прозрачность / управляемость / и т. Д.)
источник
Будучи магазином Eclipse, мы только начали использовать Buckminster для управления процессом сборки / сборки / развертывания.
Нашей первой стадией было вытащить все наши существующие зависимые библиотеки и позволить Бакминстеру позаботиться о материализации правильных. Это значительно ускоряет и сокращает развертывание.
Следующим шагом будет перемещение нашего монолитного
svn
хранилища в серию модульныхgit
хранилищ.Я не знаю, насколько хорошо Бакминстер интегрировался бы с
git
подмодулями (или ртутными подотчетами в этом отношении), но хорошо, что Бакминстер не зависит от VCS, используемого для любого данного компонента.источник