Мерзость и упаковка: общий шаблон, чтобы не допустить упаковочные файлы? - PullRequest
4 голосов
/ 14 сентября 2011

Для последнего проекта Python, который я разработал, я использовал git в качестве системы управления версиями.Сейчас время цикла разработки, в котором я должен начать отправлять пакеты бета-тестерам (в моем случае это были бы пакеты .deb).

Чтобы собрать свои пакеты, мне нужно несколькодополнительные файлы (copyright, icon.xpm. setup.py, setup.cfg, stdeb.cfg и т. д.), но Я бы хотел отделить их от источника программы , так какисходный код может использоваться для подготовки пакетов для других платформ, и не имеет смысла задерживать эти специфичные для Debian файлы.

Мой вопрос: существует ли стандартный способ / наилучшая практика для этого? В своих блужданиях по Google я пару раз спотыкался (включая здесь, на SO ) в наборе git-buildpackage , но я не уверен, что это то, что я ищуибо, как кажется, это задумано для упаковщиков, которые скачивают tar.gz из вышестоящего репозитория.

Я подумал, что возможный способ достичь того, чего я хочу, это создать ветку в репозитории git, где я хранюмой упаковочный фильмДа, но эта ветвь также должна быть в состоянии "видеть" файлы в основной ветке, и у меня нет необходимости каждый раз вручную объединять мастер в ветвь упаковки .Однако:

  • Я не знаю, хорошая ли это идея / как это должно быть сделано
  • Хотя я подозреваю, что это может включать некоторую магию git symbolic-ref, у меня нетидея, как сделать то, что я себе представлял

Любая помощь приветствуется, заранее спасибо за ваше время!

Ответы [ 3 ]

4 голосов
/ 14 сентября 2011

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

Скорее всего, вы захотите создать подкаталог для всех этих файлов, предназначенных для распространения, например, ./debian или ./packaging/debian и зафиксировать их там; У вас может быть make-файл или что-то такое, что, когда вы запустите его в этом каталоге, скопируете все файлы, где они должны быть для создания пакета, и вы будете в отличной форме!

2 голосов
/ 23 сентября 2011

В конце я остановился на ветке с make-файлом, так что моя процедура упаковки теперь выглядит примерно так:

git checkout debian-packaging
make get-source
make deb
<copy-my-package-out-of-the-way-here>
make reset

Если вам интересно, вы можете найти полный make-файл здесь (заявление об отказе: это мой первый сборочный файл, так что вполне возможно, что это не лучший сборочный файл, который вы когда-либо видели).

В двух словах, ядро ​​"трюка" находится в директиве get-source, и это использование команды git archive, которая принимает имя ветви в качестве аргумента и создает тарбол с источником из этой ветки. Вот фрагмент кода:

# Fetch the source code from desired branch
get-source:
    git archive $(SOURCE_BRANCH) -o $(SOURCE_BRANCH).tar
    tar xf $(SOURCE_BRANCH).tar
    rm $(SOURCE_BRANCH).tar
    @echo "The source code has been fetched."

Надеюсь, это поможет кому-то еще!

0 голосов
/ 14 сентября 2011

Вы можете хранить дополнительные файлы в отдельном репозитории (чтобы они тоже были версионированы) и использовать submodules для использования их в репозитории с исходным кодом.

...