Git рабочий процесс для поддержки производной вилки
Обзор
У меня есть проект, который представляет собой настройку существующего продукта FOSS. Это доходит до того момента, когда мы поддерживаем долгосрочную вилку, а не применяем новые плагины и тому подобное. Я хотел бы получить некоторые сведения о том, какой может быть самый эффективный рабочий процесс для поддержки этого проекта.
Критерии
- Мы должны иметь возможность отправлять запросы на загрузку/исправления вверх по течению.
- Проект должен отслеживать от отмеченных выпусков и может обновляться до новых версий как часть нашего собственного рабочего процесса выпуска.
- Необходимо иметь собственные тегированные сообщения
- Нужно иметь собственную ветвящую структуру для процесса git -потока, как процесс разработки.
Вариант 1
Просто разветките проект на github. Супер беспорядочно поддерживать и ускорять ход людей. сбой 3,4.
Вариант 2
Создайте новый репозиторий, попросите сопроводителя проекта поместить тегированные потоки исходной кодовой базы по мере необходимости. например, что-то вроде git fetch upstream; git merge upstream/sometag tagintegrationbranch
Не уверен, как легко нажать исправления вверх по течению в этой модели. Вид сбоя 1.
Вариант 3
Выполните проект вверх по течению, используйте его как восходящий поток, как в Варианте 2. Используется в качестве помощника для системы PR. Вероятно, придется делать вишневые кирки или некоторые аналогичные микроуправляемые функции, чтобы подталкивать код, поддерживая этот рабочий процесс, в зависимости от того, насколько хорошо управляются ветки функций/ошибок, но должны быть достаточно чистыми. Кажется, удовлетворяет большинство критериев.
Вариант?
Что-то я не рассматривал?
Ответы
Ответ 1
Вариант 3, по-видимому, представляет собой четкое разделение рабочего процесса между двумя проектами:
- один со случайным вкладом обратно в исходный проект с запросами на тягу
- один с совершенно новыми ветвями и кодом для нового приложения
Чтобы облегчить слияние, я бы рекомендовал использовать иерархические имена ветвей в вашем репо, чтобы четко разделить:
- для разработки вашего проекта (классические имена, в них нет необходимости
/
)
- ветки из восходящего/исходного репо (все префикс с именем, представляющим ветку из исходного репо, например '
original/dev
', для того, чтобы вы могли выбирать из вишни или из них)
Эти ветки уже находятся в пространстве имен для прокси-серверов/восходящих потоков, но если вы хотите отменить новые коммиты, вам нужно создать локальную ветвь, и моя точка: имя этой локальной ветки должно иметь в ней "/
", чтобы четко различать его с другими регулярными ветвями для вашего проекта.