Я новичок в autotools, и я работаю над проектом C. Я хочу добавить проект в репозиторий git. Какие файлы, создаваемые автозагрузками, мне нужно отслеживать в моей системе управления версиями и которые следует игнорировать?
Какие файлы, созданные Autotools, следует хранить в репозитории управления версиями?
Ответ 1
Вы не должны хранить файлы под контролем версий, которые не редактируются вручную. Это означает, что любой сгенерированный файл должен игнорироваться системой управления версиями. Я в основном ставил только следующее управление версиями:
-
configure.ac
-
Makefile.am
- файлы документации, такие как
AUTHORS
,NEWS
и т.д. -
Makefile.am
в подкаталогах
Чтобы решить вопрос о версии "готовой к установке", выпущенной Scharron, некоторые люди включают script в корневой каталог проекта, называемый bootstrap
или autogen.sh
, который вы запускаете один раз, когда вы проверяете новую копию. Вы можете увидеть пример в одном из моих проектов здесь. Для более простого проекта ваш autogen.sh
действительно должен состоять только из одной строки:
autoreconf --install || exit 1
хотя некоторые люди предпочитают автоматически запускать ./configure
в конце autogen.sh
.
Почему бы не отслеживать все сгенерированные файлы в контроле версий? Потому что их содержимое зависит от машины, на которой вы строите, версии автотюнов, с которыми вы их сгенерировали, и фазы луны. Каждый раз, когда любое из этих изменений, сгенерированные файлы autotools будут меняться, и вы получите много мусора в своих коммитах.
Кроме того, у любого, кто проверяет ваш код вне контроля версий, чтобы его построить, должно быть установлено, что у него установлены соответствующие средства разработки, поэтому вам действительно не нужно беспокоиться о том, что люди сталкиваются с проблемами из-за отсутствия autotools.
Что VonC говорит о проектах C, идущих с файлом configure
для генерации Makefile
, верно для дистрибутивов исходного кода (файл .tar.gz
, который вы получаете при вводе make dist
), но не обязательно для свежего out из контроля версий.
Ответ 2
Примечание. Я согласен с ptomato 'ss answer и оставляю этот ответ в качестве вики-сообщества.
Это имеет смысл для дистрибутивов исходного кода, но ваш проект может быть не один.
Для целей развития, ответ ptomato имеет больше смысла.
Все проекты C обычно содержат файл конфигурации, способный генерировать фактический Makefile, используемый для компиляции.
Поэтому, когда вы рассматриваете цепочку автонастройки, я бы рекомендовал управлять версиями всех файлов, сгенерированных до файла конфигурации, поскольку они обычно являются одноразовыми операциями генерации.
Это означает, что любой, у кого есть проверенная копия вашего проекта версии, может сразу начать:
./configure
make
make install
Итак, хотя это, как правило, верно, вы не должны запускать какие-либо сгенерированные файлы, вы можете сохранить их, особенно если другой читатель из этого проекта может:
- извлечь выгоду из не повторного генерации этих файлов (для идентичного результата)
- немедленно начать настройку и компиляцию.
Ответ 3
Как правило, вы не должны хранить сгенерированные файлы в репозитории (иначе вы увидите изменения и должны их зафиксировать/вернуть). Однако, если вы хотите, чтобы в ваш репозиторий была добавлена (готовая к установке) версия (= tagged), я бы рекомендовал хранить файлы configure и Makefile. Они нужны для установки, которые должны работать без автотетов.