У меня есть проект, который использует пары (на данный момент ~ 6) зависимостей (другие библиотеки). Большинство из них находятся на лицензиях MIT/simplefied BSD, поэтому не следует просто копировать их в мое репо.Помещает все зависимые проекты в репозитории проекта лучше?
Было бы хорошей практикой поместить все эти библиотеки в мое репо и нажать их (и когда появятся новые версии, обновите их тоже)? Или мой проект репо должен содержать только файлы проекта (код, активы и т. Д.)?
Плюсы:
- здание так много проще, как у меня есть все, что мне нужно всегда рядом
- добавлены библиотеки означает, что я проверил мой проект, используя эти версии, как и другие (старше/новее) может создать некоторые проблемы
Против:
- наворотов в проекте репо
- должен обновить зависимости от стороны
- , если я хотел бы вставить и встроенные версии, я бы вставить много
- файлов и это заняло бы много места, так что, вероятно, прилипает к источнику только?
некоторые библиотеки могут не так приятно лицензии и использовать их непосредственно (кроме требующих пользователю получить действительную библиотеку им самим) и поместить их в моем репо может сделать некоторые проблемы
, имеющие большее количество проектов, чтобы сохранить до зависимостей будет означать, что я должен обновить их для всех проектов, в то же время (например, если я сделать некоторые другие проекты, в зависимости от текущего проекта (это библиотека), то все они будут иметь одинаковые dependnecies)
В настоящее время вы используете что-нибудь, чтобы управлять своими зависимостями? Использование Git для хранения всех ваших библиотек звучит как шаг назад от инструментов, таких как Maven и Gradle. –
Это C++, у меня нет много вариантов. В настоящее время мои зависимости находятся за пределами репозитория и локально, я их установил в git-ignored folder. Что касается пользователей - я даю им информацию о том, какую версию они должны получить, и все зависит от них, чтобы загрузить, скомпилировать (если они не загружали двоичные файлы) и связать их. Это не очень хорошее решение, но «позволяет оставить их пользователям, чтобы они могли загрузить их все, если они хотят даже построить мой проект»? У некоторых репозиториев нет внешних зависимостей, некоторые из них (например, у libPNG есть zlib). Я пытался выяснить, что лучше для проектов с открытым исходным кодом. – RippeR
Что я сделал в некоторых проектах: я включил зависимости в SVN/Git как внешние/подмодули, ссылаясь на номера фиксированной версии. Таким образом, я мог бы решить, когда их обновлять, не копируя все вручную. Кроме того, я создал сборку cmake, которая компилирует все зависимости, а также основной проект. До сих пор это хорошо. (Если вы хотите, я могу немного доработать и опубликовать ответ, но в настоящее время я думаю, что это скорее комментарий.) – anderas