Управление несколькими версиями веб-приложения с помощью Git

12

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

  • Разработка ведется в developотрасли
  • Новые функции разработаны в name-of-the-featureотрасли
  • Выбросы производятся в release-**отрасли

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

Я не уверен, как мне поступить с git и несколькими приложениями , имеющими одинаковую базу.

  • Должен ли каждый из них иметь свой собственный проект git ?
  • Должны ли они быть в одном проекте, но каждый в своей ветке ?

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

Кто-нибудь сталкивался с такой ситуацией? Я не уверен, как поступить.

Благодарность!

Отредактированный Когда я сказал версию, я не имел в виду как номера версий. На самом деле это разные приложения, которые используют одну базу.

Жоао Даниэль
источник

Ответы:

7

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

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

Вы не хотите иметь несколько приложений, которые делятся кодом - это кошмар обслуживания. Если, по мере того, как вы предлагаете разрабатывать каждую ветвь в своем центральном репо, у вас будет много слияний, чтобы распространить изменения в каждом приложении. Гораздо проще полагаться на одну отдельную библиотеку и использовать что-то вроде Apache Maven для получения зависимостей проекта.

Майкл К
источник
Большая часть общего кода является кодом GWT (представления, сервисы и т. Д.). Можно ли извлечь его в библиотеку jar? Или это просто возможно на стороне сервера Java-код?
Жоао Даниэль
Элементы вида могут быть извлечены, но, возможно, не в банку. Например, javascript может быть извлечен из каждой страницы в один файл, который затем может быть включен в каждый проект. Общий код JSP должен быть извлечен в теги JSP. Возможно, вам не нужно тянуть целые страницы, но я не знаю ваш проект, поэтому я могу ошибаться.
Майкл К
что вы думаете об этом подходе: stackoverflow.com/a/2540471/2615737 ? это кажется разумным ...
Франциско Корралес Моралес
Я не думаю, что это тот же вариант использования. Этот ответ касается двух версий одного и того же приложения, которые немного отличаются друг от друга, в то время как этот вопрос касается того, что я считаю совершенно разными приложениями. Я все еще предпочел бы вообще не иметь ответвления даже в «немного другом» случае; однако, сложно выделить функциональность для разделения библиотек в Android, если есть какой-либо вид xmls. Похоже, этот ответчик не думал, что это стоило проблем для его ситуации.
Майкл К
6

Если приложения не изменят саму базу, рассмотрите возможность оставить базу в своем собственном хранилище. Затем создайте новый репозиторий для каждого из отдельных приложений и добавьте базу в виде подмодуля git .

jhenninger
источник