один и тот же проект, несколько клиентов, рабочий процесс git - PullRequest
4 голосов
/ 12 октября 2009

После моего первого вопроса я хотел бы получить подтверждение о лучшем рабочем процессе git в моем случае.

У меня есть один проект django, размещенный на github, и я разный клоны для каждой своей ветви: customerA, customerB, demo ... (думаю, веб-сайты)

Филиалы используют одно и то же ядро, но имеют разные данные и настройки (они в gitignore)

Когда я работаю в филиале CustomerA, как я должен реплицировать некоторые исправления ошибок в другие развертывания?

Когда я создаю новую общую функцию, я создаю специальную ветку, а затем объединяю ее с моим мастером. Затем для развертывания на «клиентах» я объединяю главную ветку с клиентской веткой. Это правильный путь? или я должен перебазировать?

# from customerA branch
git fetch origin master
git merge origin master

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

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

Спасибо.

Ju.

Ответы [ 4 ]

2 голосов
/ 13 октября 2009

У меня будет одно репозиторий проекта в хорошо известном месте, содержащий основную ветку с общим кодом и ветки для конкретных развертываний (например, клиент / клиент / демонстрация B).

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

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

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

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

1 голос
/ 17 октября 2009

Если три сайта совместно используют некоторый «базовый» код (например, приложение Django), вы должны выделить это ядро ​​в его собственное репо и использовать подмодули git , чтобы включить его в другие проекты, а не дублируя его.

0 голосов
/ 19 октября 2009

Не разделяйте проекты по веткам, делите их на разные репозитории.

Сделайте «общий» код достаточно универсальным, чтобы копия общего кода costumerA точно совпадала с копией общего кода costumerB.

Тогда вам не нужно ничего тянуть или объединять. При обновлении общего кода и costumerA, и costumerB получат обновление автоматически (поскольку они используют один и тот же общий код).

Под "обычным" кодом: я имею в виду пакет / серию приложений, которые используются для разработки веб-сайтов.

Я предполагаю, что репозитории costumerA и costumerB будут включать только такие вещи, как настройки и шаблоны для конкретного сайта.

Ключевым моментом здесь является «общий» код: не позволяйте costumerA использовать «слегка измененную версию» «общего» кода.

Также я бы предложил использовать механизм развертывания, не основанный на git. git - отличный инструмент для управления исходным кодом; но он не предназначен (AFAIK) для использования в качестве инструмента развертывания.

0 голосов
/ 12 октября 2009

У меня будет репо с именем project-master или что-то подобное и репо для каждого клиента. Затем, когда у вас есть код, который вам нужен для этих клиентских репозиториев, вы перетаскиваете его из мастера проекта в этот репозиторий.

...