У нас есть кодовая база C в режиме обслуживания, которая поддерживает ряд особенностей сборки для данной архитектуры платы.
Мы запускаем разработку второго поколения продукта, в котором используется новая архитектура плат. Поколение 2 заменит поколение 1 (мы больше не производим платы Gen 1). Для поколения 2 потребуется полностью переписать хороший фрагмент кода. Я бы сказал, 50%. OTOH, есть код, который останется прежним. Делать сборку модульной для поддержки обоих типов нам не стоит. По сути, мы собираемся навсегда разделить проект на два продукта.
В настоящее время мы используем схему в нашем репозитории с ветвью master
для производственных выпусков, ветвью testing
, где мы накапливаем «благословенную» работу, и отдельными ветвями для различных единиц разработки.
Итак, мы могли:
- Создайте новый репозиторий git, скопируйте в него код из старого и начните смотреть, куда нас приведет будущее.
- Сохраните тот же репозиторий, но просто добавьте больше веток.
Плюсы / минусы, как я их вижу:
- Два репозитория
- Плюсы: филиалы остаются простыми. Вынужден иметь репозиторий для каждого загруженного, если мне нужно сравнить
- Минусы: нельзя выбрать одно из двух (хотя мы делаем это редко).
- Один репозиторий, разные ветки
- Плюсы: весь код остается в одной ветке, возможно, можно использовать некоторые функции "перекрестной ветки" git.
- Минусы: необходимо аннотировать главную и тестовую ветки для двух разных вещей, чтобы устранить неоднозначность.
Я ищу совета / опыта, который заставил бы одного пойти тем или иным путем.
2 ответа
В конце концов, мы разделили репозиторий. Я разместил аналогичный вопрос на Programmers
и получил действительно хорошие ответы есть.
Я бы предпочел один репозиторий по причинам, о которых вы упомянули. Скорее всего, для одной версии будут исправления, которые вы захотите добавить в другую.
Ваши ветки не будут очень сложными, просто добавьте к любым веткам и тегам поколения 1 такие префиксы.
- gen1 / master
- gen1 / тестирование
- gen1 / some_feature
Похожие вопросы
Новые вопросы
git
Git — это распределенная система контроля версий с открытым исходным кодом (DVCS). Используйте этот тег для вопросов об использовании Git и рабочих процессах. Не используйте этот тег для общих вопросов по программированию, связанных с репозиторием Git. Не используйте этот тег для вопросов GitHub/GitHub Actions, не связанных с использованием git; вместо этого используйте [github] или [github-actions]. Не используйте тег [github] для проблем, связанных с Git, только потому, что репозиторий размещен на GitHub.