Я новичок в autotools, и я работаю над проектом C. Я хочу добавить свой проект в репозиторий git. Какие файлы, сгенерированные autotools мне нужно отслеживать в моей системе контроля версий и которые следует игнорировать?Какие файлы, созданные Autotools, должны храниться в хранилище управления версиями?
ответ
Нельзя хранить файлы под контролем версий, которые не редактируются вручную. Это означает, что любой сгенерированный файл должен игнорироваться системой управления версиями. Я в основном положить только следующее под контролем версий:
configure.ac
Makefile.am
- файлы документов, таких как
AUTHORS
,NEWS
и т.д. Makefile.am
в подкаталогах
Для решения точка наличия «готовой к установке» версии, поднятой Sch arron, некоторые люди включают скрипт в корневой каталог проекта, называемый bootstrap
или autogen.sh
, который вы запускаете один раз, когда вы проверяете новую копию. Вы можете увидеть пример в одном из моих проектов here.Для более простого проекта, ваш autogen.sh
нужно действительно только состоять из одной строки:
autoreconf --install || exit 1
хотя некоторые люди предпочитают работать ./configure
автоматически в конце autogen.sh
.
Почему бы не отслеживать все сгенерированные файлы в контроле версий? Потому что их содержимое зависит от машины, на которой вы строите, версии автотюнов, с которыми вы их сгенерировали, и фазы луны. Каждый раз, когда любое из этих изменений, сгенерированные файлы autotools будут меняться, и вы получите много мусора в своих коммитах.
Кроме того, любой, кто проверяет ваш код вне контроля версий, чтобы его построить, должен иметь установленные средства разработки, поэтому вам не нужно беспокоиться о том, что люди сталкиваются с проблемами из-за отсутствия аутов.
Что говорит VonC о проектах C идут с configure
файлом для создания Makefile
S верно для распределения исходного кода (.tar.gz
файлов, которые вы получаете, когда вы набираете make dist
), но не обязательно для свежа проверяемых из копий, начиная с версии контроль.
Как правило, вы не должны хранить сгенерированные файлы в репозитории (иначе вы увидите изменения и должны их зафиксировать/вернуть). Однако, если вы хотите, чтобы в ваш репозиторий была добавлена (готовая к установке) версия (= tagged), я бы рекомендовал хранить файлы configure и Makefile. Это тот, который необходим для установки, который должен работать без autotools.
Вы абсолютно не можете поместить Makefile в репозиторий. Существует некоторая дискуссия о том, включать или не включать Makefile.in в репо (их не должно быть, поскольку «готовые к построению» версии должны существовать только как tarballs), но совершенно неправильно ставить Make-файлы в репо. Весь смысл скрипта configure заключается в том, чтобы сконструировать Makefile (и др.), Специфичные для конкретной машины, и Makefile может отличаться в зависимости от платформы. Ничего, генерируемое configure, не может быть в repo. –
Примечание: Я согласен с ptomato 'ss answer, и оставьте этот ответ как Community Wiki.
Это имеет смысл для дистрибутивов исходного кода, но ваш проект может быть не одним.
Для целей развития, ответ ptomato имеет больше смысла.
Все проекты C обычно содержат файл конфигурации, способный генерировать фактический Makefile, используемый для компиляции.
Поэтому, когда вы рассматриваете цепочку автонастройки, я бы рекомендовал управлять версиями всех файлов, сгенерированных до файла конфигурации, поскольку они обычно являются одноразовыми операциями.
Это означает, что любой человек с извлеченной копией вашей версии проекта может сразу начать:
./configure
make
make install
Таким образом, в то время как в целом верно, вы не должны версиях любых сгенерированные файлов, вы могли бы сохраняются те, особенно если другой читатель из этого проекта может:
- Выгода от повторного создания этих файлов (для идентичного результата)
- немедленно начать настройку и компиляцию.
. Я думаю, вы в замешательстве относительно того, что такое дистрибутив исходного кода. У каждого проекта есть один, но это не то же самое, что хранится в управлении версиями. Распределение исходных кодов должно включать файлы, которые _users_ необходимо построить для проекта; управление версиями должно содержать файлы, которые _developers_ необходимо для создания проекта. – ptomato
@ptomato: снова, я согласен. Дело в том, что я продолжаю перекомпилировать проект распределения исходного кода в эти дни (но я их не разрабатываю). Отсюда мое «перекошенное» видение того, что может быть в VCS. – VonC
- 1. Где должны храниться временные файлы, созданные элементом управления MS Chart?
- 2. Какие файлы проекта ASP.NET MVC должны храниться в репозитории?
- 3. Должны ли храниться библиотечные и мультимедийные файлы в репозитории?
- 4. Какие атрибуты должны храниться в сеансе
- 5. Почему proguard не знает автоматически, какие файлы должны храниться
- 6. Какие файлы для включения в дистрибутив Autotools
- 7. При использовании источника управления, какие файлы должны быть действительно выполнены?
- 8. В каком хранилище управления версиями работает NServiceBus?
- 9. Endeca - Где должны храниться файлы обновлений?
- 10. Где должны храниться файлы конфигурации AWS EB?
- 11. Файлы спецификации RPM в системе управления версиями
- 12. Джанго статические файлы управления версиями
- 13. Autotools: как очистить файлы, созданные «./configure» в проекте lighttpd?
- 14. Какие функции реализованы в системе управления версиями?
- 15. Autotools: должны ли config.guess, depcomp или ltmain.sh храниться в репо SVN?
- 16. Должны ли хранилища управления версиями поддерживать поиск?
- 17. Какие файлы, созданные Visual Studio 2017, следует игнорировать в управлении версиями?
- 18. Какие артефакты игнорировать из управления версиями в приложении .net core.
- 19. В разработке Android какие файлы должны быть привязаны к репозиторию?
- 20. Где должны храниться файлы данных при использовании композитора?
- 21. Какие .net-файлы должны быть исключены из исходного управления?
- 22. Какие части клиента ElasticSearch.NET должны храниться для работы SniffingConnectionPool?
- 23. Какие системы управления версиями интегрируются с Bitrix24?
- 24. Определение, где файлы программ должны храниться в Java
- 25. Какие файлы Eclipse принадлежат управлению версиями?
- 26. В проекте LightSwitch HTML Client должны храниться файлы ModelManifest.xml в репозитории?
- 27. Должны ли храниться хранимые процедуры SQL в контроле источника?
- 28. Где ресурсы должны храниться в golang
- 29. Где должны храниться цветовые коды?
- 30. где должны храниться классы наследования?
Согласен. +1 (и назовите мой ответ как Community Wiki) – VonC
Если вы добавите какие-либо пользовательские макросы в каталог m4, то также должны быть добавлены. – ext
Спасибо за ответ и советы :) Хотя я хотел, чтобы мой проект находился в прямом установочном формате, но я считаю, что создание сценария, такого как autogen.sh, является лучшим вариантом. –