Включить хранилище утилит в основной репозиторий проекта и разрешить настройку - PullRequest
1 голос
/ 16 февраля 2012

Я работаю над улучшением избыточности исходного кода в некоторых проектах и ​​столкнулся с проблемой.

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

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

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

Я также просматривал git-subtree , но я не уверен, что он делает то, что я хочу.

Кто-нибудь занимался этим раньше?

1 Ответ

1 голос
/ 16 февраля 2012

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

На самом деле вы можете использовать субмодули, если каждый из ваших проектов является собственным репозиторием git.
Тогда каждый проект (родительский репозиторий) будет ссылаться на конкретную фиксацию определенной ветви утилиты.хранилище, каждая ветвь с утилитами, адаптированными для каждого проекта.

Однако для тесно связанного набора файлов (утилиты с одной стороны, проекты с другой) лучше всего хранить все в одном хранилище и использовать драйвер фильтра содержимого :

content filter driver

Вы должны иметь:

  • универсальные утилиты, версии которых приведены в качестве шаблона (т.е. без их значений))
  • файлы значений (по одному для каждого проекта)
  • версионный скрипт, способный при извлечении из скрипта 'smudge' генерировать конечные утилиты в каждом проекте (при условии, что ваш скриптвозможность обнаружить содержимое шаблона утилит ).
...