Часто проекты с открытым исходным кодом имеют папку с именем contrib. Например, у Django есть один . Для чего это?
project-structure
Полковник паника
источник
источник
Contrib
папка, которую я постоянно вижу в проектах?» - «Почему или почему проект не имеет такого?» - «Есть ли какое-то стандартное соглашение для этого, о котором я должен знать?»Ответы:
Он предназначен для программного обеспечения, которое было внесено в проект, но на самом деле не может поддерживаться основными разработчиками. Называть его «contrib» или «Contrib» является давно установленным соглашением, но в этом имени нет ничего особенного, и обычно оно используется только в довольно крупных проектах.
источник
Глядя на популярные проекты с открытым исходным кодом, которые приходят на ум, я не вижу упоминаний ни о какой папке «contrib»:
Единственная папка «contrib» - это Django. Для Django роль этой папки уже объяснена в документации :
Глава 16 Книги Джанго содержит более подробное описание роли этого каталога и список содержания.
Другой пример - Solr . С помощью
gitstats
мы можем получить статистику о вкладчиках.Затем мы можем выбрать только
contrib
каталог, запустив:и получить статистику еще раз:
Таким образом, главные авторы практически одинаковы, что означает, что это не вклады посторонних. Глядя на каталоги внутри
contrib
папки, кажется, что, опять же, это «множество дополнительных, дополнительных инструментов», точно так же, как в Django. Например, вам не нужен обработчик запросов на импорт данных, чтобы заставить работать Solr, но если вы хотите импортировать данные из базы данных или XML, хорошо иметь их вcontrib
папке. То же самое относится и к уменьшению карты, оно может вам и не понадобиться, но есть случаи, когда вы это делаете.Это плагины или дополнения? Я бы не стал использовать этот термин. Плагины и дополнения имеют особую интеграцию с основным приложением. Например, плагин не должен запускаться автономно, но размещается в основном приложении. С другой стороны,
contrib
содержит инструменты, которые могут работать автономно.источник
Contrib
(глядя на еще один прямо сейчас в Akka.NET)! - Я понятия не имею, почему у них есть папка с таким именем, или что такое соглашение для этого соглашения об именах. - Ничто из упомянутого до сих пор не подходит ко всем способам, которыми я видел "contrib". - похоже, что в каждом проекте есть совершенно разные вещи (Akka.Net, похоже, поместил там четверть своей кодовой базы: Akka.Clustering, Logging, DI, Persistence, TestKits и т. д.).Он предназначен для библиотек или компонентов, которые вносят вклад в проект, но не являются собственностью или частью самого проекта. Я всегда использовал его как общее или общее местоположение для размещения любых сторонних библиотек, которые я использую.
Например, вы можете иметь:
Затем ссылайтесь на них в каждом из компонентов проекта, используя относительные пути, чтобы не было необходимости в какой-либо настройке или настройке перед его сборкой. Он будет построен прямо из репо, независимо от того, где он будет проверен локально.
источник
vendor
илиthirdparty
.Git - отличный пример программного обеспечения с открытым исходным кодом, которое использует это соглашение:
https://github.com/git/git/tree/master/contrib
Вот соответствующая выдержка из этого файла README.md:
источник