Как вы управляете несколькими приложениями и службами Rails, которые совместно используют код и конфигурацию? - PullRequest
2 голосов
/ 19 июля 2011

У меня есть четыре приложения на Rails (и еще больше). Они делятся:

  • таблицы стилей
  • JavaScripts
  • Камни третьих лиц
  • некоторые из тех же моделей ActiveRecord
  • наши собственные библиотеки ruby ​​
  • переменные конфигурации / среды

У меня также есть несколько сервисов rabbitmq, которые взаимодействуют с вышеупомянутыми приложениями Rails.

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

/sites/rails1
/sites/rails2
/sites/rails3
/services/service1
/services/service2
/services/service2
/lib/our_code
/lib/common_js
/lib/common_css
/config/common_configuration_files

Это разумный способ сделать это?

Если бы я разбил все на их собственный git-проект, то, похоже, было бы просто индивидуально обновлять каждый проект каждый раз, когда обновлялся общий файл gem / library / css (с использованием gems / bundler или чего-либо еще).

К сожалению, наличие всего в одном проекте состоит в том, что я не могу разместить одно приложение или услугу в Heroku (легко).

Может ли здесь помочь слияние с git поддеревом? Может быть, у каждого сайта / сервиса есть своя ветка?

1 Ответ

2 голосов
/ 20 июля 2011

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

Наличие одного большого репо затрудняет отслеживание журнала репо, поскольку у вас будут ветки, которые не связаны с семантическим разделением проекта (т. Е. В приложениях Rails). Конечно, вся информация там , если вы хотите выяснить, что случилось с конкретным файлом или каталогом, но ваш общий git log --name-status будет включать информацию обо всех проектах, что менее чем желательно а также довольно сложно отфильтровать (без создания специальной системы поверх git).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...