Срединность между подмодулями и ветвями? - PullRequest
1 голос
/ 31 мая 2009

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

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

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

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

Ответы [ 2 ]

1 голос
/ 01 июня 2009

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

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

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

0 голосов
/ 31 мая 2009

Допустим, у вас есть мастер ветвей и несколько веток: feature1, feature2, feature3 ...

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

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

...