Подтвердить что ты не робот

Какие файлы, созданные Autotools, следует хранить в репозитории управления версиями?

Я новичок в autotools, и я работаю над проектом C. Я хочу добавить проект в репозиторий git. Какие файлы, создаваемые автозагрузками, мне нужно отслеживать в моей системе управления версиями и которые следует игнорировать?

4b9b3361

Ответ 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, используемый для компиляции.

Поэтому, когда вы рассматриваете цепочку автонастройки, я бы рекомендовал управлять версиями всех файлов, сгенерированных до файла конфигурации, поскольку они обычно являются одноразовыми операциями генерации.

http://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Autoconf.svg/309px-Autoconf.svg.png

Это означает, что любой, у кого есть проверенная копия вашего проекта версии, может сразу начать:

./configure
make
make install

Итак, хотя это, как правило, верно, вы не должны запускать какие-либо сгенерированные файлы, вы можете сохранить их, особенно если другой читатель из этого проекта может:

  • извлечь выгоду из не повторного генерации этих файлов (для идентичного результата)
  • немедленно начать настройку и компиляцию.

Ответ 3

Как правило, вы не должны хранить сгенерированные файлы в репозитории (иначе вы увидите изменения и должны их зафиксировать/вернуть). Однако, если вы хотите, чтобы в ваш репозиторий была добавлена ​​(готовая к установке) версия (= tagged), я бы рекомендовал хранить файлы configure и Makefile. Они нужны для установки, которые должны работать без автотетов.