2013-11-06 2 views
1

У меня есть веб-сайт, который существует в двух версиях - языковых версиях. Они работают на разных серверах как разные веб-сайты, в основном отличаются только текстом и некоторыми изображениями конфигурации, но можно ожидать, что они будут отличаться и функциональностью в будущем.Как мне управлять двумя очень похожими веб-сайтами с единственным хранилищем Git?

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

А) Есть ли изменения в них обоих Simultaniously. B) Внесение изменений только в первую версию веб-сайта. C) Внесены изменения только во вторую версию веб-сайта.

Теперь, что лучше всего подходит для этого? Я выбрал ветки git - у меня есть ветвь MASTER, а затем ветвь A и ветвь B. Если я хочу делать изменения на обоих сайтах, я делаю их на MASTER, а затем объединяю MASTER как в A, так и в B. Если я хочу делать отдельные изменения на A, я делаю их только там.

Является ли мой рабочий процесс правильной? Какой подход лучше? Я спрашиваю об этом, потому что я сделал слияние неправильно и отменил несколько коммитов, и теперь проект беспорядок. Должно быть лучшее решение.

ответ

1

Вы можете:

  • Храните все данные в одной отрасли, и пусть специальный конфигурационный файл, включенный в .gitignore, решить, какой сайт он.
  • Сохраняйте общий код в «основном» репозитории и другом содержимом в двух других репозиториях, которые ссылаются на это репо как подмодуль.
  • Переместите всю конфигурацию и содержимое в базы данных, специфичные для каждого места развертывания.
  • Продолжайте работать так, как сейчас.

Я не думаю, что есть идеальный вариант. У меня есть личный опыт в такой ситуации, хотя он отличается от вашего - я работаю над скомпилированным проектом. У нас есть iPhone build, iPad build и т. Д., И мы используем первый подход. Мы сохраняем весь код в одном репо и одном филиале (ну, мы используем ветви, но для других нужд). У нас есть специальный инструмент, который изменяет цель настройки проекта; однако все файлы хранятся в репо, и если кто-то изменяет цель сборки и фиксирует все изменения, это затрагивает всех нас. Однако, поскольку изменение сборки занимает около 20-40 секунд, это не является неудобством.

+0

Привет, не могли бы вы немного рассказать о подмодулях? Я искал этот материал за последние 15 минут, и все примеры, которые я могу найти, иллюстрируют подмодули для работы с сторонними репозиториями. Проблема с ветвями для меня в том, что она очень подвержена ошибкам. – user1848605

+0

@ user1848605 Ну, работа с сторонними библиотеками является основной целью субмодулей. Однако, если ваш код написан таким образом, что «обычную» часть кода можно рассматривать как стороннюю библиотеку, это может быть идеальным для вас. –

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