Золотая середина между подмодулями и ветвями?

StackOverflow https://stackoverflow.com/questions/932586

  •  06-09-2019
  •  | 
  •  

Вопрос

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

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

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

Итак, я ищу какой-то способ сказать, что определенные файлы/каталоги уникальны для определенной ветки, а все остальное происходит из основной ветки.Не имея лучшей аналогии, говоря в терминах Photoshop, я хочу владелец быть фоновым слоем, и каждая ветвь темы будет представлять собой частично прозрачный слой изображения поверх него с уникальным содержимым.

Это было полезно?

Решение

Это понятие «композиция» или «наследование конфигурации» не поддерживается в Git, как объяснено в вопросе «Гибкое и статическое ветвление".Только слияния позволяют вам «составить» именно тот набор файлов, который вам нужен.

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

Ваш подход должен оставаться "системный«один, где вы разрабатываете, маркируете и объединяете всю систему.Если что-то развивается в основной ветке, это необходимо объединить с ветвями функций.
Если функции включают в себя набор файлов, отличный от тех, которые были изменены в основной ветке, такое слияние будет тривиальным.Если нет, вы можете следовать предложение Матеуши, используя промежуточную ветвь для разрешения конфликтов и оценки результата такого слияния, сохраняя при этом функциональную ветвь нетронутой.

Другие советы

Допустим, у вас есть мастер ветвей и несколько ветвей:особенность1, особенность2, особенность3...

$ git checkout feature1
$ git branch master-with-feature1
$ git checkout master-with-feature1
$ git merge master

Каждый раз, когда вы вносите какие-либо изменения в владелец или функция1 вы можете оформить заказ на мастер-с-функцией1 и объединить их.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top