Рабочий процесс компиляции с контролем версий

До сих пор я использовал систему управления версиями для простых веб-проектов, которые на самом деле не имеют стадии компиляции. Сейчас я разветвил относительно большой проект, который следует стандартному шаблону "./configure; make; make install". Я не уверен в правильности рабочего процесса для такого типа проекта.

Что мне делать со всеми созданными файлами в процессе компиляции?

  • Добавить много всего в .gitignore? Это тяжело, потому что я не создавал процесс сборки и не очень понимаю все, что создается.
  • Оформить проект в другом месте для каждой сборки? Это кажется болью, учитывая, что я часто строю каждые несколько минут.
  • Просто никогда не добавляйте то, о чем я не знаю, т. е. никогда не делайте git add . Если да, то как мне время от времени подчищать?

Очевидно, это касается всех, кто имеет дело с скомпилированным кодом, поэтому я уверен, что существует общепринятый шаблон, просто я еще не знаком с ним.


person Tristan    schedule 24.07.2010    source источник
comment
Используете ли вы автоинструменты (т.е. ваш проект содержит файлы configure.ac/configure.in/Makefile.am)?   -  person Scharron    schedule 24.07.2010
comment
@scharron: Да, проект использует автоинструменты.   -  person Tristan    schedule 24.07.2010


Ответы (4)


Я согласен с ChrisF, не храните двоичные файлы, сгенерированные сборкой, в своем репозитории. Ваша цель должна состоять в том, чтобы иметь хороший файл .gitignore, чтобы в любой момент работы git status не отображались "неотслеживаемые файлы". Это означает, что git либо игнорирует, либо отслеживает все файлы.

Одна процедура, которую я использую для создания своего .gitignore, такова:

  1. добавить и зафиксировать весь исходный код в проекте (до того, как что-либо было построено)

    cd project

    git add .

    git commit -m'initial import'

  2. добавить простые шаблоны файлов, которые будут игнорироваться, в .gitignore; сюда входят такие элементы, как *.o, *.so.

    echo '*.o' > .gitignore

    echo '*.so' >> .gitignore

  3. затем я запускаю сборку.

    make

  4. тогда я бегу

    git ls-files -o >> .gitignore

    который подберет любые сгенерированные незавершенные файлы, которые вы не указали с помощью шаблонов глобусов.

-Барт

person bartman    schedule 24.07.2010

Чтобы очистить рабочий каталог, вы можете использовать git clean. По умолчанию это не причинит никакого вреда, если только вы не укажете флаг -f (force).

Командная строка git clean -xfd удалит в вашем рабочем каталоге все, что не находится в системе контроля версий.

person cypheon    schedule 24.07.2010

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

mkdir build && cd build && ../configure
person romario333    schedule 11.06.2011

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

Вы не говорите, какую IDE (если есть) вы используете - проверьте, может ли она добавить проект в систему управления версиями для вас. Если он сможет использовать эту опцию, так как он добавит только те файлы, которые абсолютно необходимы.

person ChrisF    schedule 24.07.2010