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

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

50
задан brandizzi 17 April 2012 в 23:37
поделиться

3 ответа

Вы не должны держать под контролем версий файлы, которые не были отредактированы вручную. Это означает, что любой созданный файл должен игнорироваться системой контроля версий. В основном я поместил под контроль версий только следующее:

  • configure.ac
  • Makefile.am
  • файлы документации, такие как AUTHORS, NEWS и т.д.
  • Makefile.am в подкаталогах

Для решения вопроса о наличии "готовой к установке" версии, поднятого Шарроном, некоторые люди включают в корневой каталог проекта скрипт, называемый bootstrap или autogen.sh, который запускается один раз при проверке свежей копии. Вы можете увидеть пример в одном из моих проектов здесь. Для более простого проекта ваш autogen.sh должен состоять всего из одной строки:

autoreconf --install || exit 1

хотя некоторые предпочитают запускать ./configure автоматически в конце autogen.sh.

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

Кроме того, любой, кто проверяет ваш код из системы контроля версий, чтобы собрать его, должен иметь установленные надлежащие средства разработки, поэтому вам не стоит беспокоиться о том, что у людей возникнут проблемы из-за отсутствия autotools.

То, что VonC говорит о C-проектах, поставляемых с configure файлом для создания Makefileов, верно для дистрибутивов исходного кода (файл .tar.gz, который вы получаете, набрав make dist), но не обязательно для свежевыбранных копий из системы контроля версий.

66
ответ дан 7 November 2019 в 11:01
поделиться

Примечание: Я согласен с ответом ptomato, ответом, и оставляю этот ответ как Community Wiki.
Это имеет смысл для дистрибутивов исходного кода, но ваш проект может не быть таковым.
Для целей разработки ответ ptomato имеет больше смысла.


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

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

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

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

./configure
make
make install

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

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

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

-2
ответ дан 7 November 2019 в 11:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: