Я новичок в 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. Они нужны для установки, которые должны работать без автотетов.