Эффективная архитектура проекта с git

Во-первых, позвольте мне представить общую архитектуру проекта.

Она иерархическая. Мы разрабатываем серверное приложение для наших клиентов. Оно хранится на главном сервере.

Скажем, локальный сервер 1, локальный сервер 2, ..., локальный сервер n - это серверы (экземпляры основного приложения) в разных компаниях. В каждой компании есть один локальный сервер. В основном все локальные серверы имеют одинаковую функциональность (скажем, основной модуль), но каждая компания может иметь свой. В качестве идеи было решено решить эту проблему с помощью git branching.

Рассмотрим несколько случаев.

Случай 1
Одна компания (локальный сервер x) хочет получить некоторую специфическую функцию, которая нужна только в этой компании. Следуя логике нашей идеи ветвей, мы делаем следующие шаги:

  1. создаем git-ветвь на главном сервере
  2. разрабатываем необходимую функциональность для этого сервера
  3. создаем git-ветвь (ветвь y) на локальном сервере x
  4. переносим изменения на главный сервер
  5. переключаем ветвь y на локальном сервере x
  6. переключаем на главную ветвь на главном сервере

Пример 2
Мы разработали некоторую функциональность (изменения в основном модуле), которая является общей для всех компаний

Случай 3
Мы разработали некоторую функциональность, которая является общей только для некоторых компаний

Хотелось бы услышать ваши советы о том, как решить "Случай 2" и "Случай 3".

5
задан megido 13 January 2012 в 13:54
поделиться