2013-10-14 4 views
2

В нашей среде разработки у нас есть пользовательская структура. В то время как все наши проекты начинаются с базы, он расширяется по проекту по проектной базе с использованием плагинов и тем.Несколько проектов с одним и тем же мастером GIT

Структура папки:

  • ядро ​​(содержит общий код между всеми проектами)
  • плагинов (Каждый подпапки плагин, некоторые существуют во всех проектах, некоторые из них конкретного проекта)
  • темы (Содержит только код для конкретного проекта)

В настоящее время мы клонируем наше мастерское репо, удалим папку .git, создадим новое репо и перейдем к нашим изменениям. Если функция или ошибка исправлена ​​в проекте или основном репо, мы в настоящее время вручную объединяем изменения с различными инструментами diff (преимущественно winmerge), чтобы гарантировать, что конкретные темы или плагины проекта не попадают в мастер-репо и что весь проект имеют последние основные и общие плагины.

Я знаю, что должен быть лучший подход к этому, возможно, с помощью модулей sub? Ядро как вспомогательный модуль, каждый плагин как дополнительный модуль и каждая тема как дополнительный модуль? Тогда каждый проект был собственным репо?

Или это не самое лучшее для этой установки?

ответ

0

Использование суб модуля с именем PLUGIN для плагина в мерзавца репо под названием PROJECT допустить, что это сделки РЕПО укажите конкретную версию плагина. Так что, если плагин развиваться в своей собственной РЕПО, разработчик PROJET придется идти в директории плагина в репозитории проекта, и выдать

git pull 

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

Кроме того, исходная история плагина управляется только в собственном репо. Это схема разработки, которую легче понять.

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

1

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

Каждый раз, когда вы обновляете вашу структуру, то есть просто обновить зависимостей на каждом проектах, не более хитрым слияния

Смежные вопросы